我正在使用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
我的用户模型中是否有任何要添加的内容才能使其正常工作?
答案 0 :(得分:7)
根据惯例,EF尝试在User.Creator
和User.LastEditor
之间建立一对一的关系,因为它们都引用了User
类,它们本身就位于此类中。不是Course
类的情况。对于Course.Creator
和Course.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();