【发布时间】:2016-02-03 06:45:19
【问题描述】:
我正在尝试在两个实体之间创建 required:optional 关系,其中 required 实体向可选实体公开导航属性,并且可选实体包含外键,用作其主键。这是我的两个实体的样子:
class OptionalEntity
{
public string RequiredEntityID { get; set; }
}
class RequiredEntity
{
public string ID { get; set; }
public OptionalEntity Optional { get; set; }
}
而我喜欢在 fluent API 中配置它们的方式如下:
// Inside OptionalEntityConfiguration class
public OptionalEntityConfiguration()
{
HasKey(r => r.RequiredEntityID);
}
// Inside RequiredEntityConfiguration class
public RequiredEntityConfiguration()
{
HasKey(r => r.ID);
HasOptional(r => r.Optional)
.WithRequired();
// How can I configure this relationship to use
// the RequiredEntityID property as the foreign key?
HasOptional(r => r.Optional)
.WithRequired(o => o.RequiredEntityID);
// This is invalid because it requires a navigation property, not an ID
HasOptional(r => r.Optional)
.WithRequired()
.HasForeignKey(o => o.RequiredEntityID);
// The HasForeignKey method isn't available here
}
首先这是可能的,如果可能的话,使用 fluent API 配置这种关系的正确方法是什么?
【问题讨论】:
-
HasOptional(r => r.Optional).WithRequired();就足够了。 EF 知道OptionalEntity将RequiredEntityID作为 PK 并且其实现 1-0..1 的标准方法是将其设为 PK/FK。
标签: c# entity-framework