我想在IQueryable列表中包括子对象。
我想在某些表类型IQueryable列表的选定列上包括一个子对象。
我这样尝试过:
IQueryable<Persons> persons = Context.Persons.Select(x=> new persons{Pkid=x.pkid, FirstName=x.FirstName}).AsQueryable();
persons= persons.Include("Address");
这包括子对象不起作用..任何人都请帮忙...我做错了..
非常感谢...
最佳答案
Include
不适用于投影。而且它是不需要的。只是这样做:
var query = context.Persons
.Select(x => new PersonDto
{
Id = x.pkid,
FirstName = x.FirstName,
Address = x.Address
});
这里的几点:
否
Include
在投影中直接访问
Address
,EF会处理我正在使用
PersonDto
作为投影目标。 PersonDto
只有Id
,FirstName
和Address
。您可以投影到自定义类型或匿名类型,但是不能投影到实体类型(映射的类型)-它不起作用并且会引发异常。
如果要使用映射类型,则不能仅返回选定的标量列-所有列将始终加载。只能有选择地加载导航属性。为了克服这个问题,有时可以使用Table splitting,但是如果您可以将大实体划分为分离的实体,那么这将是有用的。在您的方案中,仅使用投影。