与实体框架的多个一对多关系

本文关键字:一对多 关系 实体 框架 | 更新日期: 2023-09-27 18:37:07

我正在使用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

我有什么要添加到我的用户模型中以使其正常工作吗?

与实体框架的多个一对多关系

EF

尝试按照惯例在User.CreatorUser.LastEditor之间创建一对一的关系,因为它们都引用它们自己所在的User类。Course类的情况并非如此。对于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();