它取代了复杂类型,并且可以选择在自动预加载时将其设置为 1-1 关系 /w ToTable。这将在两个表中使用相同的 PK,与 1-1 相同。
表拆分的要点是您想要一个规范化的对象模型,而表结构不是。这将适合您拥有现有表结构并希望将该数据的相关部分拆分为与主实体关联的子实体的场景。使用 ToTable 选项,它类似于 1-1 关系,但会自动预先加载。然而,在考虑使用 1-1 关系的原因时,我会认为这个选项是一个糟糕的选择。
在正常的 1-1 关系中使用它的常见原因包括:
- 拆分昂贵的加载、很少使用的数据。(图像,二进制,备忘录)
- 将特定于单个应用程序的数据封装在公共实体之外。即,如果我有一个由计费系统与 CRM 使用的“客户”,我可能拥有“客户”拥有的“客户帐单数据”和“客户CRM数据”,而不是继承的帐单客户/CRM客户。因为有一个“单一”客户可以为一个或两个系统提供服务。计费不关心 CRM 数据,CRM 也不关心计费。如果所有数据都在“客户”中,那么两个系统都可能需要更新,当数据对另一个系统是可选的时,我不能依赖约束。通过使用组合,我可以强制执行特定系统所需的数据。
在这两种情况下,我都不想使用表格拆分或任何自动预加载的东西,因此 Owned Types /w ToTable 不会完全取代 1-1 关系。它本质上是复杂类型的更严格版本,我会说它严格用于实体组织。不是我承认想要经常使用的东西。