【发布时间】:2014-06-26 05:35:47
【问题描述】:
我认为获得关于何时使用WithOptionalDependent 以及何时使用WithOptionalPrincipal 的明确答案可能会有所帮助。这两个函数的帮助有点不清楚,我发现自己在挖掘多个 Stack Overflow 答案和其他网站上的答案,结合答案,以便确信我已经让关系朝着正确的方向发展。
这是 MSDN 对 WithOptionalDependent 的评价:
将关系配置为可选:可选,不带 关系另一端的导航属性。实体 正在配置的类型将是依赖的并包含一个外键 给校长。关系目标的实体类型 成为关系中的主人。
这是关于WithOptionalPrincipal的内容:
将关系配置为可选:可选,不带 关系另一端的导航属性。实体 正在配置的类型将是关系中的主体。这 关系目标将是依赖的实体类型,并且 包含主体的外键。
“正在配置的实体类型”这一行总是让我感到困惑(我假设其他人)。
在这个例子中:
class MyEntityA
{
[Key]
public int Id { get; set; }
public int BId { get; set; }
[ForeignKey("BId")]
public MyEntityB B { get; set; }
}
class MyEntityB
{
[Key]
public int Id { get; set; }
}
modelBuilder.Entity<MyEntityA>().HasOptional(a => a.B).WithOptionalDependent();
“正在配置的实体类型”是指MyEntityA 还是MyEntityB?我认为是前者。
如果正确,您会使用WithOptionalPrincipal 的示例是什么?
我实际上认为在我的代码示例中它应该真的是 WithMany 并且两者都不是 WithOptional 选项。显然我还是一头雾水!
这两个函数都有重载,使导航属性转向另一个方向。我认为这些重载不会改变这些答案,但如果我错了,请纠正我。
我希望这对更大的社区也有帮助。
【问题讨论】:
标签: c# entity-framework ef-code-first