鉴于以下伪代码,如何使用.Include
调用此函数并将其传递给ctx.Table
public class Complicated
{
// fields here
}
public IEnumerable<Complicated> GetComplicatedData<T>()
{
using(MyDbCtx ctx = new MyDbCtx())
{
return ctx.Set<T>().Select(p=> new Complicated { /* fill */ }).ToList();
}
}
答案 0 :(得分:1)
你做不到。您的方法正在进行投影,即使您找到了永远不会使用您的包含的方式。如果您想使用Include,您必须以这种方式使用方法:
ctx.Table.Include(...).ToList().Select(p => new Complicated { ... });
此示例没有多大意义,因为您知道填充Complicated
项目所需的数据,因此您可以直接通过linq-to-entites填充它们,而无需使用Include
或你知道你需要通过linq-to-objects填充你的Complicated
实体。
自定义投影类没有急切或延迟加载。