渴望用原始SQL加载实体

时间:2013-06-14 22:10:23

标签: c# .net entity-framework ef-code-first entity-framework-5

我知道在Entity Framework(Code First)中可以使用像this这样的原始SQL加载实体:

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

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

1 个答案:

答案 0 :(得分:1)

您需要先将博客附加到上下文,然后显式加载您需要的每个属性。据我所知,这需要单独完成,例如,在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.
}