我正在创建一个Asp.Net Core项目。该项目附带了一个迁移文件。该文件将生成我的数据库。但是我在数据库中有一些表,我想像样本一样创建迁移文件。
示例:
migrationBuilder.CreateTable(
name: "AspNetRoles",
columns: table => new
{
Id = table.Column<string>(nullable: false),
ConcurrencyStamp = table.Column<string>(nullable: true),
Name = table.Column<string>(maxLength: 256, nullable: true),
NormalizedName = table.Column<string>(maxLength: 256, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_AspNetRoles", x => x.Id);
});
如果我有一张现有的表格。我该如何创建这个文件?
答案 0 :(得分:0)
首先,您需要决定使用哪种方法进行DbFirst或CodeFirst。文件可以自动生成,然后您也可以手动更改文件。
我建议使用CodeFirst,因为它提供了对模型和dbcontext的最大控制。
步骤2:现在在包管理器控制台中键入enable-migrations
步骤3:使用(db)上下文和从数据库表生成的模型。对模型进行更改
步骤4:在包管理器控制台中键入add-migration [某些名称以标识迁移]
步骤5:检查生成的迁移文件。
步骤6:在包管理器控制台中键入update-database
现在您的更改已更新到数据库。从现在开始,您可以使用codefirst方法来处理对数据库的更改。
希望这有帮助!
答案 1 :(得分:0)
MigrationBuilder
仅存在于EntityFramworkCore中。注意EntityFramworkCore和EntityFramwork 6.x之间的区别。 EntityFramworkCore的文档是here。可能解决您问题的教程是here。
运行类似这样的内容:
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer
从数据库中反向设计模型。这也将为您生成模型快照和迁移(如果不是自己运行Add-Migration,则不太确定)。
Add-Migration
和Update-Database
现在您可以获得迁移文件,您的模型和数据库也是同步的。
此外,值得一看Feature Comparesion以了解EntityFramworkCore不支持的内容。到现在,
EntityFramworkCore没有EntityFramwork 6.x所具有的许多GUI工具。例如,您无法使用其他答案中提到的实体数据模型向导。如果您意外使用GUI工具,它将默认生成EntityFramwork 6.x相关的东西。因此,您必须在Visual Studio中的程序包管理器控制台中使用cmdlet
执行此类任务。