我构建了一个控制台项目,并首先使用代码将模型映射到数据库。当我运行Add-Migration InitialMigration
的命令时,出现错误:
来自程序集'Microsoft.EntityFrameworkCore.SqlServer,版本= 3.1.5.0,区域性=中性,PublicKeyToken = adb9793829ddae60'的类型'Microsoft.EntityFrameworkCore.SqlServer.Query.Internal.SqlServerSqlTranslatingExpressionVisitorFactory'中的方法'Create'没有实现
DbContext
是:
class ActorDbContext : DbContext
{
public DbSet<Actor> Actors { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(
@"Server=(localdb)\mssqllocaldb;Database=ActorDb;"
+ "Trusted_Connection=True;");
}
}
实体为:
public class Actor
{
public int Id { get; set; }
public String Name { get; set; }
public int Age { get; set; }
public bool AcademyWinner { get; set; }
}
答案 0 :(得分:5)
我刚刚使用VS for Mac
遇到了同样的问题。
我的问题是我安装了以下版本的软件包:
- Microsoft.EntityFrameworkCore.Tools
5.0.0-preview.8.20407.4
- Microsoft.EntityFrameworkCore.Design
5.0.0-preview.8.20407.4
- Microsoft.EntityFrameworkCore.SqlServer
3.1.8
记下使用的不同版本。
为了解决此问题,我卸载了preview
版的软件包并安装了最新的稳定版本。
- Microsoft.EntityFrameworkCore.Tools
3.1.8
- Microsoft.EntityFrameworkCore.Design
3.1.8
- Microsoft.EntityFrameworkCore.SqlServer
3.1.8
再次记下所有3个软件包的版本。
安装完每个软件包的正确版本后,问题就解决了,我的Add-Migration
正常了。
答案 1 :(得分:3)
您必须包括以下所有相同版本的软件包:
Microsoft.EntityFrameworkCore
Microsoft.AspNetCore.Identity.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.SqlServer
我尝试过,它运行良好。
答案 2 :(得分:1)
我正在添加[mohammed-abdelwahab] [1]的答案 以下软件包需要为最新更新:
Microsoft.EntityFrameworkCore
Microsoft.AspNetCore.Identity.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.SqlServer
为此,请右键单击项目->管理Nuget软件包->单击更新,然后逐个更新所有内容;如果不存在,则添加如下所示的内容
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer
PM> Install-Package Microsoft.EntityFrameworkCore.Tools
PM> Add-Migration InitialMigration
祝你好运:)
答案 3 :(得分:0)
也许您正在尝试混合使用不同的版本。确保所有版本都对齐。
答案 4 :(得分:0)
尝试将您的SqlServer更改为最新版本(5.0.0),一旦我更新到最新版本,它就会运行完全相同的错误。
答案 5 :(得分:0)
在做旧教程时,我遇到了同样的问题。问题是我安装了带有“ -pre”子句的软件包。
使用以下命令:
PM> Get-Package -ProjectName <YourProjectName>
输出:
Id Versions ProjectName
-- -------- -----------
Microsoft.EntityFrameworkCore.Tools {5.0.0-rc.2.20475.6} FirstEFCoreProject
Microsoft.EntityFrameworkCore.Sq... {3.1.9} FirstEFCoreProject
PM> Uninstall-Package Microsoft.EntityFrameworkCore.Tools
PM> Install-Package Microsoft.EntityFrameworkCore.Tools
PM> Add-Migration InitialMigration
答案 6 :(得分:0)
我也有这个问题。事实证明,我不小心同时安装了Microsoft.EntityFrameworkCore.SqlServer
和Microsoft.EntityFrameworkCore.Sqlite
。
我真的只需要Sqlite,所以我删除了对SqlServer的引用。然后我不得不修复几个引用SqlServer的地方,而不是Sqlite,我错过了,现在错误消失了。