Code First Fluent API,我该怎么做?
Posted
技术标签:
【中文标题】Code First Fluent API,我该怎么做?【英文标题】:Code First Fluent API, how can I? 【发布时间】:2012-02-15 15:29:35 【问题描述】:为此,我如何首先在 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
【问题讨论】:
您的数据库模型看起来不正确,因为Deparment
侧有两个 FK。你能描述一下这两个实体之间的关系吗?
当我接受培训以实现这一目标时,这是一个不好的例子(为了赶时间),但想象一下,我希望一个员工可以在许多部门工作,并且每个部门可能有几个老板,他工作这是正确的subir-imagenes.es/?v=bdcorrect.png
慢慢来,建立一个有意义的数据库模型。尝试使用流畅的 API 对其进行建模。那里有很多文章。如果您有具体问题,请询问。
对此感到抱歉。但是我说西班牙语的人都是西班牙语,所以我试着用英语做一个例子,因为人们可以理解我并帮助我,这样会更容易理解。我现在已经编辑了我的问题,如果你能帮助我,我想要的是一个员工可以在许多部门工作,并且可以让一个员工在任何部门工作。在我的具体情况下,我无法获得示例
【参考方案1】:
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;
【讨论】:
以上是关于Code First Fluent API,我该怎么做?的主要内容,如果未能解决你的问题,请参考以下文章
Entity Framework Code First Fluent API - 配置关系