我的订单类有:
public int CustomerId { get; set; }
public Customer Customer { get; set; }
我真的需要这两个属性才能使关系有效吗?
我没有使用断开连接的实体,我使用的是代码优先方法。
最佳答案
根据 Julia Lerman 的书:Programming Entity Framework: DbContext ,区别在于更新导航属性的难度。在第 85 页,她建议“如果您可以做一件事来让您在 N 层场景中的生活更轻松,那就是为您的模型中的关系公开外键属性。”本书包含两种场景的示例。
原因是包含一个外键属性告诉 Entity Framework 使用外键关联,这比在需要更新关系时使用所谓的独立关联更简单,即将订单从一个客户更改为另一个客户在你的例子中。使用外键关联,您需要做的就是更改 CustomerId。如果没有 CustomerId 外键,您需要更多步骤。独立关联使用说明的 ObjectStateManager Code First: Independent associations vs. Foreign key associations? ObjectStateManager 很复杂,甚至没有从 DbContext API 公开。
关于c# - 在什么情况下我需要 Entity Framework 中的外键和导航属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14915938/