Generic Get方法不包括FK?

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)

但是,当我尝试访问视图模型中的外键"类别"时,出现错误.为什么不包括在内?

Jon*_*eet 6

我不能说我自己使用过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>.)