我知道在Entity Framework(Code First)中可以使用像this这样的原始SQL加载实体:
using (var context = new BloggingContext())
{
var blogs = context.Blogs.SqlQuery("SELECT * FROM dbo.Blogs").ToList();
}
但是,是否有可能以某种方式急切地使用此方法加载导航属性?我想编写一个自定义查询来加载一个复杂的实体,并急切地加载它的导航属性(使用带有Includes
的EF已被证明太慢了。)
答案 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.
}