5

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

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

4

1 回答 1

7

EF 尝试 - 按照惯例 - 在 和 之间创建一对一的关系User.CreatorUser.LastEditor因为它们都引用User它们自己所在的Course类。类的情况并非如此。ForCourse.CreatorCourse.LastEditorEF 创建了两个与User. 为了实现相同的属性,User您必须配置与 Fluent API 的关系:

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

modelBuilder.Entity<User>()
    .HasOptional(u => u.LastEditor)  // or HasRequired
    .WithMany();
于 2012-06-14T16:08:41.420 回答