实体框架核心迁移预先存在的数据库 InitialCreate 失败

时间:2021-06-08 14:51:51

标签: c# entity-framework-core entity-framework-migrations

我正在尝试将 Entity Framework Core 与预先存在的数据库一起使用,有时是这样。

要重现此错误:

SQL:

CREATE DATABASE TestDB
GO

USE TestDB

CREATE TABLE Parent
(
    Id INT NOT NULL PRIMARY KEY IDENTITY(1,1),
    Name NVARCHAR(400) NOT NULL
)

CREATE TABLE Child
(
    Id INT NOT NULL PRIMARY KEY IDENTITY(1,1),
    Name NVARCHAR(400) NOT NULL,
    ParentId INT NOT NULL FOREIGN KEY REFERENCES PARENT(Id) 
)

//CHANGE INSTANCE NAME IF NEEDED
Scaffold-DbContext "Server=.;Database=TestDB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

这将创建所有模型和上下文以访问您的数据库。

现在开始我的问题。

我运行 add-migration InitialCreate 并生成一个迁移类。很棒,对吧?

然后我运行 Update-Database

我收到此错误。

<块引用>

数据库中已经有一个名为“Parent”的对象。

如果我注释掉 up 方法中的所有内容,则迁移工作。

如何在没有数据库的系统上而不是在有初始数据库的系统上应用此迁移?

1 个答案:

答案 0 :(得分:0)

因为它是一个现有的数据库并且您已经运行 Scaffold-DbContext "Server=.;Database=TestDB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir 模型 要获取模型,您无需再次运行或执行以下操作: add-migration InitialCreateUpdate-Database 您需要做的就是确保您的连接字符串正确无误。