在什么场景中,我需要实体框架中的外键和导航属性

本文关键字:导航 框架 属性 在什么 实体 | 更新日期: 2023-09-27 17:59:47

我的订单类有:

public int CustomerId { get; set; }
public Customer Customer { get; set; }

我真的需要这两个属性才能使关系正常工作吗?

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

在什么场景中,我需要实体框架中的外键和导航属性

根据Julia Lerman的书:编程实体框架:DbContext,区别在于更新导航属性的难度。在第85页中,她建议"如果有一件事可以让你在N层场景中的生活更轻松,那就是公开你模型中关系的外键属性。"这本书包括了这两种场景的示例。

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