在什么情况下我需要实体框架中的外键和导航属性

Eli*_*eth 13 c# entity-framework foreign-keys ef-code-first entity-framework-5

我的订单类有:

public int CustomerId { get; set; }

public Customer Customer { get; set; }
Run Code Online (Sandbox Code Playgroud)

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

我没有使用断开连接的实体,我使用代码第一种方法.

Yin*_*ing 14

根据Julia Lerman的书:Programming Entity Framework:DbContext,不同之处在于更新导航属性的难度.在第85页中,她建议"如果在N-Tier场景中有一件事可以让你的生活变得更轻松,那就是为模型中的关系公开外键属性." 该书包括两种情景的样本.

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