1

假设我有一个 table+class A,另一个 table+classAType代表不同类型的A,以及一个 table+classB继承自A.

B是某种类型的A,但它太复杂了,无法A在数据级别与其他类型的 相适应,并且需要在模式级别拥有自己的表 - 当然它是自己的类。

B仍然是 的一种A,所以我想在AType表示中有一个记录B,并且type归档在A记录中实际上是Bs 指向该记录AType。我还希望能够添加更多继承自的表+类A,并对其 PK 进行硬编码。

现在,如果我直接使用 SQL,我会A为 PK 的继承者创建负值记录。这样,AType在数据级别添加的具有正 PK 的新 s 将永远不会与硬编码模式级别的冲突,并且作为一个很好的奖励,我可以很容易地分辨出哪些记录A是硬类型的,哪些是软类型 - 无需查看AType

我是 Entity Framework 的新手,所以我不想在尝试传统方式之前应用黑客式的解决方案。那么在实体框架中解决这个问题的惯例是什么?

4

1 回答 1

0

如果您想遵循您奇怪的方法,您必须手动处理键值 - 您将获得与 SQL 相同的结果,但它很容易出错(尤其是由于并发性)。它也不会生成您期望的漂亮 SQL,因为 EF 不会理解隐藏在键值中的逻辑,因此即使您尝试仅查询A,它也会连接所有派生表以查找哪些记录确实是正确A的 - 这就是 EF 处理的方式TPT 继承。

于 2012-08-07T15:40:53.473 回答