"Script-Migration" 可以在 .NET Entity Framework Core 中创建数据库吗?
Can "Script-Migration" create the database in .NET Entity Framework Core?
我正在使用 .NET Entity Framework Core 中的代码优先方法创建我的数据库关系。在本地,如果我 运行 Add-Migration
和 Update-Database
,则创建的数据库包含所有正确的 table。
对于部署,我想使用 Script-Migration
来生成 SQL 脚本,而不是 运行 宁 Update-Database
。但是生成的脚本假定数据库已经存在。
这是我试过的方法:
Add-Migration InitialMigration -Context MyContext
Script-Migration 0 InitialMigration -Context MyContext
但是生成的脚本以table开头:
IF OBJECT_ID(N'[__EFMigrationsHistory]') IS NULL
BEGIN
CREATE TABLE [__EFMigrationsHistory] (
...
我读到我不应该将 Database.EnsureCreated()
与迁移结合使用,那么最佳做法是什么?我应该自己写数据库创建部分吗?
对,自己写。创建数据库在提供者之间非常不一致,并且不能总是使用 SQL 来完成。因此,EF Core 在创建迁移脚本时将其留给用户。
我正在使用 .NET Entity Framework Core 中的代码优先方法创建我的数据库关系。在本地,如果我 运行 Add-Migration
和 Update-Database
,则创建的数据库包含所有正确的 table。
对于部署,我想使用 Script-Migration
来生成 SQL 脚本,而不是 运行 宁 Update-Database
。但是生成的脚本假定数据库已经存在。
这是我试过的方法:
Add-Migration InitialMigration -Context MyContext
Script-Migration 0 InitialMigration -Context MyContext
但是生成的脚本以table开头:
IF OBJECT_ID(N'[__EFMigrationsHistory]') IS NULL
BEGIN
CREATE TABLE [__EFMigrationsHistory] (
...
我读到我不应该将 Database.EnsureCreated()
与迁移结合使用,那么最佳做法是什么?我应该自己写数据库创建部分吗?
对,自己写。创建数据库在提供者之间非常不一致,并且不能总是使用 SQL 来完成。因此,EF Core 在创建迁移脚本时将其留给用户。