EntityFrameWork.Core 和 EntityFramework 在执行查询时有什么不同?
最近,在迁移一个 .NET Framework 的项目到 .NET Core 。然后这几天一直遇到了一个问题,直到今天才有了点起色。
问题其实时这样的:
这个是在 .NET Framework上面的查询代码。
return await myInfo
.Where(...)
.OrderBy(...)
.ThenByDescending(..)
.ToListAsync();
然后 myInfo 这个Entity 中呢有一个外键 就是 UerInfo,
在 .NET Framework上面呢,上面那段代码执行后,是能够成功也把我的UserInfo 查询出来的,但是呢,我迁移到 .NET Core上 发现 那个 UserInfo的值竟然是空的。前些天一直以为是我的AutoMapper 映射有问题,但是查看了 代码发现不对。最终锁定在这个语句。
然后今天咨询了一下, 在原来的代码中加上 .Include(c => c.外键名) 竟然查出来了。
代码如下:
return await myInfo
.Where(...)
.Include(c => c.外键)
.OrderBy(...)
.ThenByDescending(..)
.ToListAsync();
所以我想问一下,这个是EntityFramework 和 EntityFramework.Core 这个的区别吗?
最根本的原因是什么?
2回答
-
尚方宝剑之说
efcore不再有延迟加载,所以你只能通过Include来进行显式加载
-
江户川乱折腾
Lazy Loading | Explicit Loading | Eager Loading in EntityFramework and EntityFramework.Core