0

Comment puis-je définir la structure correcte pour cette question entre ces deux tables et colonnes? Merci.Entity Framework Code First- Deux clés étrangères nullables et une non-null de la même table

table Tâches:

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;} 

utilisateurs Tableau:

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

Dans mon DbContext Classe:

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); 

} 

Répondre

0

Changer à:

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); 

    } 

et utilisateurs classe:

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