最近,在迁移一个 .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 这个的区别吗?
最根本的原因是什么?
efcore不再有延迟加载,所以你只能通过Include来进行显式加载