实体框架 - 查询继承

发布于 2024-10-06 01:12:49 字数 647 浏览 0 评论 0原文

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

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

I was tasked as a homework assignment to make a task tracker. I wanted to learn entity framework for this assignment, especially how to use the inheritance aspects. Projects, tasks and sub-tasks all have a lot of similar properties, so I thought I would use inheritance, but can't figure out how to query particular projects.

I drew this diagram in Visual Studio:

Entity Diagram

I then created the database from this model. How can I get an Employees Projects?

I've started with this:

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

But ((Employee)employee).Projects is not available, but ((Employee)employee).Items is. ((Employee)employee).Items.Projects is also not available. How do I get an Employee's projects? Should I add a Navigation Property to Employees for this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜扑 2024-10-13 01:12:49

您必须使用 Queryable.OfType(TResult) 扩展方法为了过滤 Manager 类型的实体:

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

相关资源:

You'll have to use the Queryable.OfType(TResult) extension method in order to filter the entities of type Manager:

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

Related resources:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文