将一个项目升级到 .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
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