6

我知道在实体框架(代码优先)中可以使用原始 SQL 加载实体,如下所示

using (var context = new BloggingContext())
{
    var blogs = context.Blogs.SqlQuery("SELECT * FROM dbo.Blogs").ToList();
}

但是是否也可以使用这种方法以某种方式急切地加载导航属性?我想编写一个自定义查询来加载一个复杂的实体并急切地加载它的导航属性(使用 EFIncludes已经证明太慢了)。

4

1 回答 1

0

您需要首先将博客附加到上下文,然后显式加载您需要的每个属性。据我所知,这需要单独完成,例如,在foreach.

foreach (var blog in blogs)
{
    context.Blogs.Attach(blog);

    context.Entry(blog).Collection(a => a.Comments).Load();
    context.Entry(blog).Reference(a => a.Author).Load();

    // Here you can use blog.Author and blog.Comments with no problem.
}
于 2015-03-19T22:01:34.213 回答