.net 6项目使用EntityFrameworkCore生成Entity 和 DbContext的时候,一直报错:Method 'Fragment' in type 'Microsoft.EntityFrameworkCore.Design.Internal.CSharpHelper' from assembly 'Microsoft.EntityFrameworkCore.Design, Version=6.0.10.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' does not have an implementation.
详细错误如下:
找不到原因,没有解决思路,搜索了好半天尝试了好多次终于解决,记录一下!!!
最佳解决方案
重点是:使用EF Core生成底层代码时有的底层引用的EntityFrameworkCore相关类库与启动项目引用的EntityFrameworkCore相关类库版本不一致....
这就要求所有的相关底层引用的EFCore相关类库和启动项目(一般是web)保持一致,比如我碰到的问题:
我想要在A.Repository这个类库下面生成EF底层,并且A.Repository引用的EntityFrameworkCore版本与Web一致,都是6.0.10,但是B.Repository这个类库引用的7.0版本,这就导致在A.Repository类库下无法执行EF Core生成底层的命令。
请检查项目下所有类库对于EntityFrameworkCore的引用版本是否与启动项目一致:
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.AspNetCore.Identity.EntityFrameworkCore