首页 新闻 会员 周边

升级到 .NET Core 3.0 遇到的 EF Core 问题:"Could not load type 'Microsoft.EntityFrameworkCore.Internal.LazyRef`1'"

0
悬赏园豆:30 [已解决问题] 解决于 2019-05-21 19:06

将一个项目升级到 .NET Core 3.0 Preview 5 后,运行时出现下面的错误,请问如何解决?

Could not load type 'Microsoft.EntityFrameworkCore.Internal.LazyRef`1' from assembly 'Microsoft.EntityFrameworkCore, Version=3.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'

问题补充:

出错的地方用到了 Z.EntityFramework.Plus.EFCore

github 上的相关 issue :Error with Batch methods EF Core 3.0 preview 5

dudu的主页 dudu | 高人七级 | 园豆:30979
提问于:2019-05-21 17:09
< >
分享
最佳答案
1

EF Plus 中用到了 Microsoft.EntityFrameworkCore.Internal.LazyRef 比如下面的代码

Microsoft.EntityFrameworkCore.Internal.LazyRef<IStateManager> lazyStateManager = stateManagerDynamic as Microsoft.EntityFrameworkCore.Internal.LazyRef<IStateManager>;

EF Core 3.0 移除了 LazyRef ,推荐使用 System.Lazy

var lazyStateManager = stateManagerDynamic as Lazy<IStateManager>;

本准备修改 EF Plus 的源码解决这个问题,但修改中发现 EF Plus 中还有好几个地方与 EF Core 3.0 不兼容,于是改变主意,寻找替代品。

后来找到了 EFCore.BulkExtensions ,轻松取代 EF Plus ,只需将 UpdateAsync 改为 BatchUpdateAsync

dudu | 高人七级 |园豆:30979 | 2019-05-21 19:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册