我刚开始使用EF代码,所以我在本主题中是初学者。
我致力于任务管理系统。我正在处理任务和员工之间的多对多关系。有三种关系
对于每个这样的多对多关系,我有三个表。 到目前为止,我已尝试过这种方法,我收集的所有记录都是负责人而非相关记录。对方法的任何建议?我做错了什么?
代码I用于获取数据
var tasks = db1.Tasks.Include(t => t.TaskPriority).Include(t=>t.Responsible).Where(t => t.tas_status.Equals(AppGlobals.PENDING) || t.tas_status.Equals(AppGlobals.WAITING));
_
[Table("Task")]
public class Task
{
public Task()
{
this.Responsible = new HashSet<Employee>();
this.Notified = new HashSet<Employee>();
this.Approved = new HashSet<Employee>();
}
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int tas_id { get; set; }
public string tas_name {get; set;}
public virtual ICollection<Employee> Responsible { get; set; }
public virtual ICollection<Employee> Notified { get; set; }
public virtual ICollection<Employee> Approved { get; set; }
}
[Table("Employee")]
public class Employee
{
[Key]
[Display(Name = "Employee ID")]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int emp_id { get; set; }
[Required]
[Display(Name = "Employee Name")]
public string emp_name { get; set; }
public virtual ICollection<Task> Assigned { get; set; }
public virtual ICollection<Task> Notified { get; set; }
public virtual ICollection<Task> Approved { get; set; }
}
[Table("TaskResponsible")]
public class TaskResponsible
{
[Required]
[Display(Name = "Task")]
[Key, Column(Order = 0)]
public int tas_id { get; set; }
[Required]
[Display(Name = "Person Responsible")]
[Key, Column("emp_id", Order = 1)]
public int emp_id { get; set; }
public virtual Task Task { get; set; }
public virtual Employee Responsible { get; set; }
}
[Table("TaskApproval")]
public class TaskApproval
{
[Required]
[Display(Name = "Task")]
[Key, Column(Order = 0)]
public int tas_id { get; set; }
[Required]
[Display(Name = "Person Approved")]
[Key, Column(Order = 1)]
public int emp_id { get; set; }
public virtual Task Task { get; set; }
public virtual Employee Approved { get; set; }
}
[Table("TaskNotified")]
public class TaskNotified
{
[Required]
[Display(Name = "Task")]
[Key, Column(Order = 0)]
public int tas_id { get; set; }
[Required]
[Display(Name = "Person Notified")]
[Key, Column("emp_id", Order = 1)]
public int emp_id { get; set; }
public virtual Task Task { get; set; }
public virtual Employee Notified { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Task>()
.HasMany(a => a.Responsible)
.WithMany(d => d.Tasks)
.Map(m =>
{
m.MapLeftKey("tas_id");
m.MapRightKey("emp_id");
m.ToTable("TaskResponsible");
});
modelBuilder.Entity<Task>()
.HasMany(a => a.Notified)
.WithMany(d => d.Tasks)
.Map(m =>
{
m.MapLeftKey("tas_id");
m.MapRightKey("emp_id");
m.ToTable("TaskNotified");
});
modelBuilder.Entity<Task>()
.HasMany(a => a.Approved)
.WithMany(d => d.Tasks)
.Map(m =>
{
m.MapLeftKey("tas_id");
m.MapRightKey("emp_id");
m.ToTable("TaskApproval");
});
base.OnModelCreating(modelBuilder);
}