c# - 在什么情况下我需要 Entity Framework 中的外键和导航属性

标签 c# entity-framework ef-code-first foreign-keys entity-framework-5

我的订单类有:

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/

相关文章:

c# - 是什么让 ADO.NET Entity Framework 与市场上的其他 ORM 不同?

c# - 为什么 Entity Framework 会尝试插入现有实体?

entity-framework - 如何首先在 EF 4.1 代码中使用延迟加载和两个表上的相同主键编写可选的一对一关系?

c# - 使用 xsd.exe 从 ereg 关联生成 c# 文件

c# - CosmosDb SDK v3 是否在批量插入时自动重试?

C# - LinkedList - 如何删除指定节点之后的所有节点?

c# - MessageBox.Show中的参数MessageBoxResult defaultResult是做什么用的?

c# - 更改外键约束命名约定

c# - 尝试使用通用存储库更新 EF 中的类时出现 `Attaching an entity of type failed...` 异常

entity-framework - LinqPad + EF 4.1 + SQL Server CE