2011-05-07 4 views
0

에는 3 개의 클래스가 있습니다.모델에서 데이터베이스를 생성 할 때 다중성 오류가 발생합니까?

  public class User 
    { 
     public Guid Id { get; set; } 
     public string Username { get; set; } 
     public string PersonelNumber { get; set; } 
     public string Password { get; set; } 
     public bool IsActive { get; set; } 
     public DateTime LastLoginDate { get; set; } 
     public bool IsOnline { get; set; } 
    } 

    public class Comment 
    { 
     public Guid Id { get; set; } 

     /// <summary> 
     /// Title of the comment 
     /// </summary> 
     public string Title { get; set; } 

     /// <summary> 
     /// Full text for comment 
     /// </summary> 
     public string Text { get; set; } 

     //Maps to the User Id 
     public Guid CreatedById { get; set; } 

     public virtual User CreatedBy { get; set; } 
    } 

    public class FileVersion 
    { 
     public Guid Id { get; set; } 
     public string Path { get; set; } 
     public int Version { get; set; } 

//Referecne to optional comment   
     public virtual Guid ChangeCommentId { get; set; } 
     public virtual Comment ChangeComment { get; set; } 
//Referece to user who added a file 
     public virtual Guid AddedById { get; set; } 
     public virtual User AdddedBy { get; set; } 
//Reference to User who may have the file checked out 
     public virtual Guid CheckedOutById { get; set; } 
     public virtual User CheckedOutBy { get; set; } 
} 

데이터베이스가 FilVersion과 Comment 사이의 주석 관계를 만들려고 할 때 오류가 발생합니다. FileVersion 클래스에 대해이 매핑을 만들었습니다.

HasOptional(f => f.ChangeComment).WithMany().HasForeignKey(f => f.ChangeCommentId).WillCascadeOnDelete(false); 

데이터베이스를 만들 때 다중도 오류가 발생하지 않도록 매핑을 설정하는 방법을 잘 모르겠습니다. FileVersion은 파일을 추가 한 사람과 편집을 위해 누가 체크 아웃했는지에 대한 레프리네이션이 필요합니다.

답변

0

외부 키가 null을 허용하지 않을 때 Comment을 선택적으로 정의 할 수 없다는 것이 문제입니다. 어느로 엔티티를 수정

public class FileVersion 
{ 
    ...  
    public virtual Guid? ChangeCommentId { get; set; } 
    public virtual Comment ChangeComment { get; set; } 
    ...  
} 

또는에 매핑을 수정합니다 CheckedOutBy 매핑을 구성하는 방법을

modelBuilder.Entity<FileVersion>() 
      .HasRequired(f => f.ChangeComment) 
      .WithMany() 
      .HasForeignKey(f => f.ChangeCommentId) 
      .WillCascadeOnDelete(false); 

동일 아마 CheckedOutBy

+0

을 위해 필요한 것입니다 확실하지 않다. – DDiVita

+0

생각해 봤어 : HasRequired (f => f.CheckedOutBy) .WithRequiredDependent(). WillCascadeOnDelete (false); – DDiVita

+0

그리고 당신은 무엇을 가지고 있습니까? 그것은 아주 비슷해야합니다. –

관련 문제