在阅读了关于无效列鉴别器的大量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应用程序中重复了逆向工程,以确保这一点。
答案 0 :(得分:0)
我相信我终于在这里找到了问题所在。 我从一开始就知道它与EF对查找表的处理有关。
我知道Table Perirarchy(“TPH”)功能在这里发挥作用。
我没有意识到那些实际上并不需要成为Discriminator列。
我确实有一个TPH,因为有一个名为AdditionalLocationsOrderRowOption的类型,它继承自OrderRowOption。
所以,即使我的域名类型的数据库中没有Discriminator列(我已经无数次验证过),TPH正在发挥作用并阻止我对订单项目进行包含。
因此,我的下一步将是使用EF-to-entities的Join方法。