Cha*_*let 5 c# orm entity-relationship entity-framework entity-framework-4.1
我正在使用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; }
}
Run Code Online (Sandbox Code Playgroud)
当我尝试生成我的数据库时,我收到此错误:
无法确定类型"用户"和"用户"之间关联的主要结束.必须使用关系流畅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; }
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,我生成了这些外键:
Creator_Id
LastEditor_Id
Run Code Online (Sandbox Code Playgroud)
我的用户模型中是否有任何要添加的内容才能使其正常工作?
EF尝试 - 按惯例 - 在它们之间创建一对一的关系User.Creator,User.LastEditor因为它们都引用User它们自己所在的Course类.对于类来说不是这种情况.For Course.Creator和Course.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();
Run Code Online (Sandbox Code Playgroud)