3

我的任务是做一个任务跟踪器。我想学习这个作业的实体框架,特别是如何使用继承方面。项目、任务和子任务都有很多相似的属性,所以我想我会使用继承,但不知道如何查询特定的项目。

我在 Visual Studio 中画了这张图:

实体图

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

我从这个开始:

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是。((Employee)employee).Items.Projects也不可用。我如何获得员工的项目?我应该为此向员工添加导航属性吗?

4

1 回答 1

4

您必须使用Queryable.OfType(TResult) 扩展方法来过滤类型管理器的实体:

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

相关资源:

于 2010-11-30T23:09:37.497 回答