2011-02-18 2 views
9

아주 간단한 질문입니다. 나는 System.Uri 유형의 속성을 가진 모델을 가지고있다. Uri에는 매개 변수없는 기본 생성자가없고 ID 필드가 없습니다. 내 모델 생성을 재정의하여 DB에 맞춤형으로 저장할 수있는 방법이 있습니까 (예 : string). NHibernate에서 전에 IUserType을 구현 했었지만 CodeFirst에서 비슷한 메커니즘을 찾을 수 없었습니다.Entity Framework Fluent API를 사용하여 Map System.Uri

분명히, 나는 후드 아래 Uri를 사용하고 정기적으로 맵핑 가능한 속성 & 생성자를 노출하는 사용자 지정 형식을 만들 수 있습니다 내가 필요가 없습니다 있도록이 시스템 유형을 매핑 할 수있는 방법이 있다면, 난 그냥 궁금 해서요 그런 포장지.

답변

7

EF는 NH와 같은 사용자 지정 형식 매핑을 지원하지 않습니다.

특히 System.Uri의 경우 래퍼 속성을 사용하고 실제 값을 문자열로 매핑합니다. 그렇게 나쁘진 않네.

+0

그래, 결국 나는 String을 사용한 다음 DataType 유효성 검사 속성을 수행했다. – Paul

+0

Entity Framework 5 기준으로 Enums가 지원됩니다. – Odys

+0

5가 아닌 6에서 지원을 얻은 것 같습니다. –

0

이 일을 시도 ..

[Column(Name="MyUri", TypeName="string")] 
public Uri MyUri 

당신이 도움이 열 특성

using System.ComponentModel.DataAnnotations; 

희망에 필요한 참조를 추가해야합니다 ...

+0

EF 코드의 CTP5를 먼저 참조하고 싶습니다. –

+6

기쁨이 없습니다. 작동하지 않았습니다. 난 여전히 "엔티티 왕복하지 않을 것이다"오류가 발생합니다. – Paul

2

불행하게도, 직접적인 방법이 없습니다 EF가있는 System.Uri ~ string으로 매핑하십시오.

당신은 그러나 데이터 주석을 사용하여 다음과 같이 URL 속성을 속성 수 :

[DataType(DataType.Url)] 
public string Link { get; set; } 

이 것입니다 이것은 URL (예를 들어 ASP.NET과 실버로 표시하고 검증해야 할 몇 가지 서비스를 말할 수 그것에 대한 지원이 내장되어 있음).