0

이 두 테이블과 열 사이에이 질문에 대한 올바른 구조를 설정하려면 어떻게해야합니까? 감사합니다.Entity Framework 코드 - 두 개의 nullable 테이블과 같은 테이블의 null이 아닌 외래 키 하나

작업 테이블 :

public int EntryUserId{get;set;} 
public virtual Users EntryUser{get;set;} 

public int? AssignToUserId{get;set;} 
public virtual Users AssignToUser{get;set;} 

public int? CheckerUserId{get;set;} 
public virtual Users CheckerUser{get;set;} 

사용자 테이블 : 내 DbContext 클래스에서

public virtual IEnumerable<Tasks> EntryUser 
public virtual ICollection<Tasks> AssignToUser 
public virtual ICollection<Tasks> CheckerUser 

:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Tasks>() 
       .HasRequired(m => m.EntrybyUser) 
       .WithMany(t => t.EntryUser) 
       .HasForeignKey(m => m.EntryUserId) 
       .WillCascadeOnDelete(true); 

    modelBuilder.Entity<Tasks>() 
       .HasRequired(m => m.AssignToUser) 
       .WithMany(t => t.AssignToUser) 
       .HasForeignKey(m => m.AssignToUserId) 
       .WillCascadeOnDelete(true);//for nullable 

    modelBuilder.Entity<Tasks>() 
       .HasRequired(m => m.CheckerUser) 
       .WithMany(t => t.CheckerUser) 
       .HasForeignKey(m => m.CheckerUserId) 
       .WillCascadeOnDelete(true);//for nullable 
    base.OnModelCreating(modelBuilder); 

} 

답변

0

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Tasks>() 
        .HasRequired(m => m.EntryUser) 
        .WithMany(m=> m.EntryUser) 
        .HasForeignKey(m => m.EntryUserId) 
        .WillCascadeOnDelete(true); 

     modelBuilder.Entity<Tasks>() 
        .HasOptional(m => m.AssignToUser) 
        .WithMany(t => t.AssignToUser) 
        .HasForeignKey(m => m.AssignToUserId) 
        .WillCascadeOnDelete(true);//for nullable 

     modelBuilder.Entity<Tasks>() 
        .HasOptional(m => m.CheckerUser) 
        .WithMany(t => t.CheckerUser) 
        .HasForeignKey(m => m.CheckerUserId) 
        .WillCascadeOnDelete(true);//for nullable 
     base.OnModelCreating(modelBuilder); 

    } 

및 사용자 클래스 :로 변경

public class Users 
{ 
    public virtual ICollection<Tasks> EntryUser { get; set; } 
    public virtual ICollection<Tasks> AssignToUser { get; set; } 
    public virtual ICollection<Tasks> CheckerUser { get; set; } 
}