[英]EF Table Per Type with Navigation property on Sub Type Table
我希望SO社区中的某人能够在这里为我提供帮助。
简化的背景:我正在使用Entity Framework V1构建下面概述的类结构,我正在使用“每种类型的表”保留继承的对象:
Employee
CaseA : Case
CaseB : Case
CaseC : Case
CaseB对员工具有导航属性
我有一个返回ObjectQuery的存储库。 如果Case类型实际上是CaseB,则需要在图中包含Employee对象。 我不能使用.Include(“ Employee”),因为它不是Case的导航属性,并且Employee上没有.Load()方法。
理想情况下,我希望能够在一个查询中执行此操作,但是作为一个后退,我很高兴能够打电话,检查Object并执行另一个调用,如下所示:(尽管如前所述,加载不会t存在于员工导航属性上)
//Get the case from the
Case myCase = new Repo<Case, Entities>.FirstOrDefault();
if(myCase is CaseB)
((CaseB)myCase).Employees.load();
我在这里错过了一些非常简单的事情吗?
尝试这个:
var employee = ctx.Cases
.OfType<CaseB>()
.Include("Employees")
.Select(x => x.Employees)
.FirstOrDefault();
在继承方面, OfType<T>()
是EF中最重要的方法之一-您应该熟悉它。
本质上是将查询中的项目过滤为特定类型-与您在回答中所做的条件检查非常相似。
这是一个IQueryable
方法(LINQ-Objects),但是在LINQ-Entities( ObjectQuery<T>
)中,它被实现为INNER JOIN。
上面的应该起作用-只要确保在执行OfType
之后就执行了OfType
加载。
HTH。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.