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,我该怎么做?的主要内容,如果未能解决你的问题,请参考以下文章

Code First约定-Fluent API配置

EFEF框架 Code First Fluent API

Code First约定-Fluent API配置

Entity Framework Code First Fluent API - 配置关系

EntityFramework Code-First 简易教程-------领域类配置之Fluent API

EF Code First Fluent API指定外键属性