3

먼저 데이터 주석 또는 유창한 API를 사용하여 열이 고유해야한다는 것을 EF 4.1에 알리는 방법이 있습니까?고유 한 열 및 탐색 속성에 대한 Fluent Mappings/Data Annotations가 Entity Framework 4.1에서 다른 이름을 사용합니까?

둘째, 탐색 속성과 관련하여 문서 및 사용자 클래스가 2 개 있습니다. 문서 클래스에서 OwnerId (UserId) 속성과 Owner (User) 속성이 있습니다. OwnerId가 실제로 UserId이고 Owner가 User로 되돌아가는 탐색 속성임을 EF 4.1에 어떻게 알리 죠?

문서 클래스

:

public abstract class Document: BaseEntity 
    { 
     public bool IsActive { get; set; } 
     public string Description { get; set; } 
     //The UserId 
     public Guid OwnerId { get; set; } 
     //The User 
     public User Owner { get; set; } 

    } 
+0

는 키의 예를 들어 http://msdn.microsoft.com/en-us/library/gg508808(v=vs.98).aspx를 참조하십시오 유효성 검사를 사용하여 고유 한 속성. –

답변

5

엔티티 프레임 워크는 첫 번째 질문에 대한 모든 그래서 대답에 고유 키를 지원하지 않습니다은 no입니다.

OwnerId은 외래 키의 이름이 다른 기존 데이터베이스에 매핑하지 않는 한 자동으로 Owner의 외래 키로 인식되어야합니다.

public abstract class Document: BaseEntity 
{ 
    public bool IsActive { get; set; } 
    public string Description { get; set; } 
    [Column("UserId"), ForeignKey("Owner")] 
    public Guid OwnerId { get; set; } 
    public User Owner { get; set; } 
} 

외래 키 데이터 주석이 아마 필요하지 않습니다하지만 당신은 명시 적으로 탐색 속성으로 FK 속성을 쌍을 사용할 수 있습니다 :이 경우에 당신은 예를 들어 사용할 수 있습니다. 유창 매핑에서

당신은 사용할 수 있습니다

modelBuilder.Entity<Document>() 
      .Property(d => d.OwnerId) 
      .HasColumnName("UserId"); 
modelBuilder.Entity<Document>() 
      .HasRequired(d => d.Owner) 
      .WithMany(...) 
      .HasForeignKey(d => d.OwnerId); 
+0

그래서, 나의 검증은 중복 된 엔트리를 찾아야 할 것입니다, 맞습니까? 그것은 비즈니스 개념에서 의미가 있습니다. 왜냐하면 모든 시스템이 그 요구 사항을 필요로하지는 않기 때문입니다. 늘 그렇듯이 훌륭한 대답입니다! – DDiVita