在EF6中使用TPT或TPH继承时,您可以执行以下代码:
`WarehouseEmployee wEmp = new WarehouseEmployee();
_context.Employees.Add(wEmp);
在此示例中,WarehouseEmployee派生自Employee,Employee是一个抽象类。员工在派生的DbSet<Employee> Employees
类中将是DbContext
。
我认为让我失望的部分是你可以在TPT,TPC或TPH中调用相同的方法,但它在每个引擎盖下的工作方式不同。这种差异发生在哪里?实施差异是什么?
答案 0 :(得分:1)
在this feature request for TPT中,EF小组已从
移出我们团队的感觉是TPT通常是一种反模式,后来会导致严重的性能问题。虽然启用它可能会使一些人更快乐&#34;从它开始最终只会导致问题。我们愿意考虑它,所以我们将这个开放,并将根据我们得到的反馈来考虑它。 (Rowan Miller,2015年5月29日)
到
分诊:我们计划根据社区的反馈做到这一点。纯粹由于时间限制,它不会在初始版本中出现(只有TPH会在)。 (Rowan Miller,2015年10月3日)
最后到
TPT支持是我们计划实施的,但它是一个很大的交叉功能。我无法说它将在2.1之后的下一个版本中,因为还有许多其他竞争功能也是高优先级。但是,每个版本我们还会考虑哪些构建块需要更接近能够支持这些大的交叉功能。所以我们越来越近了,但它需要更多的时间。 (亚瑟维克斯,2018年2月12日)
因此,您似乎必须耐心等待或寻找其他实施策略(例如1:0..1
关联)。
我不认为EF6如何做到这一点的问题非常重要。首先,你知道这会得到什么?但是,更重要的是,EF-core是Entity Framework的完全翻版。完全没有机会将EF6代码移植到EF核心代码。