0
今天我试图修改现有的泛型GetAll方法以使用eager includes。 我已启用延迟加载,但我想为某些特定的缓存优化进行急切加载。ObjectQuery上的泛型包含实际上并不包含任何内容
public IQueryable<T> GetAll<T>(List<string> eagerIncludeList) where T : EntityObject, new()
{
var entitySet = String.Format("[{0}]", FetchEntitySetName<T>());
ObjectQuery<T> q = this.db.CreateQuery<T>(entitySet);
foreach (string x in eagerIncludeList) {
q.Include(x);
}
return q;
}
上面的代码不起作用(至少不是急于加载),用它来调用它。
DB.GetAll<PageConfig>(new List<string>() {"Containers"})
不加载相关的集装箱为我PageConfigs, 但 当硬编码的包括,它的工作,所以我敢肯定,命名为“集装箱”是正确的
var example = db.PageConfigSet.Include("Containers").ToList();
这给了example.First()。Containers.IsLoaded = true;
关于为什么使用CreateQuery的泛型代码不起作用,但使用硬编码ObjectSet的泛型代码的任何想法?
射击我!我一直在看这个1小时!所以Include实际上不会修改输入...好吧! –