我认为这里有类似的帖子,但不完全一样......
我的EF模型中有两个实体 - 让我们称之为Person和Developer,后者继承自前者.
我还有一个名为Qualifications的开发者协会.这在Person实体上不可见.
如果我正在针对上下文编写查询,我该如何自动.Include()开发人员的资格,例如
来自员工的context.Employee .Include("Qualifications")选择员工
不起作用...... EF抱怨这种关系不存在(我假设因为它在Employee上不存在 - 但是在上下文中没有Developer实体,只有Employee).
Tri*_*ran 12
我遇到过这个问题并进行了一些实验.这是我发现使用LINQ 2实体工作的.
假设我们在您的示例中有人< - Developer ---- Qualifications.
如果您想选择包含资格的开发人员,您可以这样做.
var dev = (from d in context.Persons.OfType<Developer>
.Include("Qualifications")
where d.ID == id
select d).FirstOfDefault();
Run Code Online (Sandbox Code Playgroud)
现在假设我们在Person和Address之间有另一个关联,我们也可以使用LINQ 2 Entity将Address包含在select中.
var dev = (from d in context.Persons
.Include("Address")
.OfType<Developer>()
.Include("Qualifications")
where d.ID == id
select d).FirstOfDefault();
Run Code Online (Sandbox Code Playgroud)
注意我在转换Type之前如何包含我需要的东西,并在转换后再次包含.两个包括现在应该没有任何问题地一起工作.我测试了这些方法,它们都有效.我希望他们能为你工作,因为你正确地设置了继承.
GL.
我不熟悉 EF,但这在我看来像是一个标准的继承问题。如果您想从“父”对象的集合中访问子类的唯一属性(其中实际对象可能是也可能不是子类的实例),那么您需要检查对象类型并将其强制转换为子类在适当的情况下,您可以访问独特的属性。
如果部分或全部对象是人而不是开发人员,您希望给定的语句返回什么?
| 归档时间: |
|
| 查看次数: |
8341 次 |
| 最近记录: |