Jor*_*Axe 1 c# linq generics entity-framework repository
我正在尝试创建一个通用的GetAll方法,该方法适用于我的ASP.NET MVC4项目中的每个模型类.
这是我的代码:
public static List<T> GetAll(params string[] includeProperties)
{
using (MovieSiteDb db = new MovieSiteDb())
{
var entities = db.Set<T>();
foreach (var includeProperty in includeProperties)
{
entities.Include(includeProperty);
}
return entities.ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我用以下方式调用它(Movie继承了GetAll方法):
Movie.GetAll("Category");
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试访问视图模型中的外键"类别"时,出现错误.为什么不包括在内?
我不能说我自己使用过EF,但一般来说LINQ在调用方法时不会改变查询 - 而是返回一个新的查询.因此,如果您将代码更改为:
DbQuery<T> entities = db.Set<T>();
foreach (var includeProperty in includeProperties)
{
entities = entities.Include(includeProperty);
}
Run Code Online (Sandbox Code Playgroud)
你可能会发现解决了这个问题.
(entities现在固定的类型DbQuery<T>而不是使用var隐式输入DbSet<T>,作为Include返回DbQuery<T>.)
| 归档时间: |
|
| 查看次数: |
849 次 |
| 最近记录: |