使用原始SQL提前加载实体
本文关键字:加载 实体 SQL 原始 | 更新日期: 2023-09-27 18:18:24
我知道这是可能的,在实体框架(代码优先)加载一个实体使用原始SQL像这样:
using (var context = new BloggingContext())
{
var blogs = context.Blogs.SqlQuery("SELECT * FROM dbo.Blogs").ToList();
}
但是,是否有可能以某种方式急切加载导航属性使用这个方法,以及?我想写一个自定义查询,加载一个复杂的实体,并急切地加载其导航属性(使用EF与Includes
已被证明太慢)。
首先需要将博客附加到上下文,然后显式加载所需的每个属性。据我所知,这需要单独完成,例如,在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.
}