代码第一Fluent API,我怎么能

本文关键字:怎么能 API Fluent 代码 | 更新日期: 2023-09-27 18:24:37

如何首先在EF4.1代码中使用流利的api?

    public class employee
    {
        public int employeeId{ get; set; }
        public string name{ get; set; }
    }
    public class employeeDeparment
    {
        public int Id{ get; set; }
        public int employeeId{ get; set; }
        public int bossId{ get; set; }
        public int DeparmentId{ get; set; }    
        public virtual employee employees { get; set; }
        public virtual employee boss { get; set; }
        public virtual deparment deparments{ get; set; }
    }
    public class deparment
    {
        public int deparmetId{ get; set; }
        public string Name { get; set; }
    }

试试这个,但不工作

modelBuilder.Entity<deparment>()
                   .HasOptional(c => c.boss )
                   .WithMany()
                   .HasForeignKey(c => c.bossId);

它在数据库中的样子

编辑:数据库正确http://subir-imagenes.es/?v=bdcorrect.png

代码第一Fluent API,我怎么能

modelBuilder.Entity<EmployeeDeparment>().HasMany(x => x.Employees)
    .WithRequired(x => x.EmployeeDepartment).HasForeignKey(x => x.EmployeeId);
modelBuilder.Entity<EmployeeDeparment>().HasMany(x => x.Bosses)
    .WithRequired(x => x.EmployeeDepartment).HasForeignKey(x => x.bossId);

另一个解决方案是不定义中间表(它将由EF创建)

public class employee
{
    public int employeeId{ get; set; }
    public string name{ get; set; }
    public ICollection<department> departments { get;set; }
}
public class deparment
{
    public int deparmetId{ get; set; }
    public string Name { get; set; }
    public ICollection<employee> employees { get;set; }
    public ICollection<employee> bosses { get;set; }
}