看不出为什么SQL正在搜索鉴别器列

时间:2013-12-10 22:22:34

标签: entity-framework ef-code-first entity-framework-6

在阅读了关于无效列鉴别器的大量SO问题后,我看不出为什么会遇到这个问题。

我使用EF Power Tools Visual Studio扩展程序反向设计了数据库Code-First。

我的Orders DbSet中有一个“OrderRow.OrderRowOptions.Option”的包含路径。也就是说,

context.Orders.Include("OrderRow.OrderRowOptions.Option")

任何表上都没有Discriminator列,我的任何POCO都没有Discriminator属性。

正在生成并发送到数据库的SQL包括Discriminator列。

为什么呢?这不像他们不同步。我在Console应用程序中重复了逆向工程,以确保这一点。

1 个答案:

答案 0 :(得分:0)

我相信我终于在这里找到了问题所在。 我从一开始就知道它与EF对查找表的处理有关。

我知道Table Perirarchy(“TPH”)功能在这里发挥作用。

我没有意识到那些实际上并不需要成为Discriminator列。

我确实有一个TPH,因为有一个名为AdditionalLocationsOrderRowOption的类型,它继承自OrderRowOption。

所以,即使我的域名类型的数据库中没有Discriminator列(我已经无数次验证过),TPH正在发挥作用并阻止我对订单项目进行包含。

因此,我的下一步将是使用EF-to-entities的Join方法。