Joa*_*oao 5 mapping entity-framework entity-framework-4.1
我正在尝试这堂课:
public class Person
{
public int PersonID { get; set; }
public string Name { get; set; }
public int SpouseID { get; set; }
public virtual Person Spouse { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
关系是:一个人有一个或零个配偶/一个配偶有一个必需的人
是否可以在Fluent API中构建此模型?
谢谢.
遗憾的是,由于目前EF不支持唯一密钥,因此无法进行真正的自引用一对一关系.要使这种真实的自我引用一对一SpouseID必须标记为唯一.EF仅允许主键一对一(依赖实体中的主键必须也是主体实体的外键),这意味着自引用一对一关系将以PersonID <-> PersonID=两个PersonID在单个表中具有相同的实体结束.这是不可能的,因为它是PersonID主键,它必须是唯一的.
您可以将其作为一对多处理,并且只公开单个导航属性,如您所知:
modelBuilder.Entity<Person>()
.HasOptional(p => p.Spouse)
.WithMany()
.HasForeingKey(s => s.SpouseID);
Run Code Online (Sandbox Code Playgroud)
要在数据库中强制实施一对一关系,您将添加自定义数据库初始化程序并在SpouseID列上手动创建唯一索引.
问题是它只是单向导航,所以你可以得到人的配偶,但从那里Spouse你不能回到丈夫.
| 归档时间: |
|
| 查看次数: |
3212 次 |
| 最近记录: |