【问题标题】:Multiple one to many relationships with Entity Framework与实体框架的多个一对多关系
【发布时间】:2012-06-14 15:46:18
【问题描述】:

我正在使用 EntityFramework 4.1。

我有以下型号:

public class User 
{
   [Key]
   public int Id { get; set; }
   public string Username { get; set; } 
   public string Password { get; set; }

   public virtual User Creator { get; set; }
   public virtual User LastEditor { get; set; }
}

当我尝试生成我的数据库时,我收到了这个错误:

无法确定之间关联的主体端 类型“用户”和“用户”。该关联的主体端必须是 使用关系流式 API 或数据显式配置 注释。

但我也有这门课:

public class Course 
{
   [Key]
   public int Id { get; set; }
   public string Name { get; set; } 

   public virtual User Creator { get; set; }
   public virtual User LastEditor { get; set; }
}

它工作正常,我生成了这些外键:

Creator_Id
LastEditor_Id

我是否需要在我的用户模型中添加任何内容以使其正常工作?

【问题讨论】:

标签: c# entity-framework orm entity-framework-4.1 entity-relationship


【解决方案1】:

EF 尝试 - 按照惯例 - 在 User.CreatorUser.LastEditor 之间创建一对一的关系,因为它们都引用了它们自己所在的 User 类。@ 不是这种情况987654324@上课。对于Course.CreatorCourse.LastEditor,EF 创建了两个与User 的一对多关系。要在User 中实现相同的属性,您必须配置与 Fluent API 的关系:

modelBuilder.Entity<User>()
    .HasOptional(u => u.Creator)     // or HasRequired
    .WithMany();

modelBuilder.Entity<User>()
    .HasOptional(u => u.LastEditor)  // or HasRequired
    .WithMany();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-01
    • 2012-02-13
    • 2013-11-24
    • 1970-01-01
    • 2017-01-28
    • 2011-12-17
    • 1970-01-01
    相关资源
    最近更新 更多