使用实体框架选择子对象列表时,如何获取对相关父对象的引用
问题描述:
使用EF如何访问子对象列表时使用EF如何访问父属性中的值。使用实体框架选择子对象列表时,如何获取对相关父对象的引用
即我有一个项目目标和时间表对象
项目
标识
名称
...
的TimeSheet
专案编号
用户ID
日期
TimeSpent
...
我知道如何找回项目及其相关的时间表,但如果我想拿回所有的时间表的给定用户,然后简单地显示与每个时间表记录的项目名称是什么。
例如ProjectName,Date,TimeSpent
创建一个新实体来形成结果集或者我应该能够返回IEnumerable并访问.Project.Name字段是最佳实践。
这是超级容易使用LINQ to SQL或只是直线上升ADO.net/SPs等,但其对EF笑死我了..
任何想法?
答
孩子们总是和父母有关系。在你的情况下,它可能被称为“TimeSheet.Project”。因此,您可以编写如下查询:
var q = from u in Context.Users
where u.UserId == userId
from ts in u.TimeSheets
select new
{
ProjectName = ts.Project.Name,
Date = ts.Date,
TimeSpent = ts.TimeSpent
};
谢谢。因此,如果您使用存储库模式,您会将其投影到可以通过图层传递的新实体中,还是仅通过匿名类型? – Chet 2009-09-19 22:45:39
匿名类型很难返回。你的方法可能需要返回像IQueryable所以对于Repository模式,在这种情况下,我建议返回一个IQueryable ,为此目的创建SomePOCO。 –
2009-09-19 23:23:28