【发布时间】:2016-05-13 05:04:39
【问题描述】:
我正在尝试使用 ASP.NET MVC 5 开发一个小型应用程序。
我正在使用具有代码优先方法的实体框架。
首先,我创建了我的第一个模型,然后按照以下步骤在数据库中创建表
- 我打开了包管理器控制台
- 我执行了
Enable-Migrations - 我执行了
Add-Migration InitilizeModel1Table - 最后,创建表我执行
Database-Update
在第 3 步中创建了一个名为 datetime_InitilizeModel1Table 的迁移,它创建了将自动创建表的代码。
在第 4 步中,它应用了 create table 命令并按预期在数据库中创建了表。
现在,我又创建了 3 个模型,我喜欢为每个模型创建一个单独的迁移,以保持我的代码分离。
所以我想我会从第 2 步重新开始,所以接下来
Add-Migration InitilizeModel2TableAdd-Migration InitilizeModel3TableAdd-Migration InitilizeModel4TableDatabase-Update
但是Add-Migration InitilizeModel2Table 命令正在创建一个没有创建表所需代码的空迁移。
这是一个例子
namespace App.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class InitilizeModel2Table : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
}
如何为每个模型创建新的迁移,而无需手动编写迁移脚本来创建表?
【问题讨论】:
-
如果您想为每个模型单独迁移,您必须一次添加一个,并在每次创建之间创建一个迁移。 EF 显然没有选择您的新模型,您是否以与原始模型相同的方式创建它们?
-
我相信我做到了。我所做的只是右键单击模型文件夹,添加新的,类。他们输入了班级名称。
-
您是否将新模型添加到您的上下文中?
-
@SvenGrosen 我没有 :) 这就是它创建空迁移的原因 :) Add-Migration 命令如何知道在创建迁移时选择哪个模型?它会寻找任何没有迁移并创建它的东西吗?所以如果我一次在上下文类中放置一个模型,我会为每个模型获得一个迁移类?
-
Add-Migration将查找 EF 不知道的所有更改。关于您关于每个模型进行一次迁移的问题,是的,这是我的理解。
标签: asp.net-mvc entity-framework asp.net-mvc-4 asp.net-mvc-5