实体框架 - 使用.Include进行继承?

entity-framework

我认为这里有类似的帖子,但不完全一样......

我的EF模型中有两个实体 - 让我们称之为Person和Developer,后者继承自前者。

我还有一个名为Qualifications的开发者协会。这在Person实体上不可见。

如果我正在针对上下文编写查询,我该如何自动.Include()开发人员的资格,例如

来自员工的context.Employee .Include(“Qualifications”)选择员工

不起作用...... EF抱怨这种关系不存在(我假设因为它在Employee上不存在 - 但是在上下文中没有Developer实体,只有Employee)。

热门答案

我遇到过这个问题并进行了一些实验。这是我发现使用LINQ 2实体工作的。

假设我们在您的示例中有人< - Developer ---- Qualifications。

如果您想选择包含资格的开发人员,您可以这样做。

var dev = (from d in context.Persons.OfType<Developer>
                            .Include("Qualifications")
          where d.ID == id
          select d).FirstOfDefault();

现在假设我们在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();

注意我在转换Type之前如何包含我需要的东西,并在转换后再次包含。两个包括现在应该没有任何问题地一起工作。我测试了这些方法,它们都有效。我希望他们能为你工作,因为你正确地设置了继承。

GL。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因