14

我的订单课程有:

public int CustomerId { get; set; }

public Customer Customer { get; set; }

我真的需要这两个属性来建立关系吗?

我没有使用断开连接的实体,我使用的是代码优先方法。

4

1 回答 1

16

根据 Julia Lerman 的书:Programming Entity Framework: DbContext,区别在于更新导航属性的难度。在第 85 页,她建议“如果您可以做一件事来让您在 N 层场景中的生活更轻松,那就是为模型中的关系公开外键属性。” 本书包含两种场景的示例。

原因是包含外键属性告诉实体框架使用外键关联,这比在您需要更新关系时使用所谓的独立关联更简单,即在您的示例中将订单从一个客户更改为另一个客户. 使用外键关联,您需要做的就是更改 CustomerId。如果没有 CustomerId 外键,您需要更多步骤。独立关联使用代码优先解释的 ObjectStateManager :独立关联与外键关联?ObjectStateManager 很复杂,甚至没有从 DbContext API 中公开。

于 2013-11-16T18:44:07.573 回答