实体框架 - 查询继承

时间:2010-11-30 22:54:25

标签: .net entity-framework inheritance navigation-properties

我的任务是做一个任务跟踪器的家庭作业。我想学习这个赋值的实体框架,特别是如何使用继承方面。项目,任务和子任务都有很多类似的属性,所以我认为我会使用继承,但无法弄清楚如何查询特定的项目。

我在Visual Studio中绘制了这个图:

Entity Diagram

然后我从这个模型创建了数据库。我如何获得员工项目?

我从这开始:

ModelContainer m = new ModelContainer();
var employee = (from e in m.Employees 
               where e.UserName == username
               select e).First<Employee>();

((Employee)employee).Projects不可用,但((Employee)employee).Items是。{1}}。 ((Employee)employee).Items.Projects也不可用。我如何获得员工的项目?我应该为员工添加导航属性吗?

1 个答案:

答案 0 :(得分:4)

您必须使用Queryable.OfType(TResult) extension method才能过滤Manager类型的实体:

using (var model = new ModelContainer())
{
    Manager manager = (from m in model.Employees.OfType<Manager>()
                       where m.UserName == username
                       select m).FirstOrDefault();
}

相关资源: