首先迁移 Entity Framework 6 个代码
Migration with Entity Framework 6 code first
我有一个 ASP.NET MVC 项目首先使用 EF 代码和迁移。
我正在尝试将新的 属性 添加到 class。为此,我创建了迁移代码,以便在 table 中添加与 class 相关的特定列。
我的迁移代码如下:
public partial class Add_DataRequisicao_to_BiblRequisicao : DbMigration
{
public override void Up()
{
AddColumn("dbo.BiblRequisicoes", "DataRequisicao", c => c.String(nullable: false, defaultValue: "01/01/1900 00:00"));
}
public override void Down()
{
DropColumn("dbo.BiblRequisicoes", "DataRequisicao");
}
}
要添加到 class 的 属性 如下:
[Required]
[Display(Name = "Data Requisição")]
public string DataRequisicao { get; set; }
当我发布项目并转到项目网站时,我收到以下错误消息:
Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Either write the pending model changes to a code-based migration or enable automatic migration. Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration.
检查数据库,我看到迁移 运行 成功,因为列已创建。在迁移 table 中,还有一个新条目表示迁移 运行。
迁移入口:
MigrationId: 201704261436437_Add_DataRequisicao_to_BiblRequisicao
ContextKey: WebAppInvestigacaoMultimedia.Migrations.Configuration
Model: 0x1F8B0800000...
ProductVersion: 6.1.3-40302
如果迁移 运行 成功并且 属性 的名称和类型与 [=] 的添加列相同,我不明白为什么我会收到错误消息35=].
此错误通常与尚未添加到迁移脚本的模型更改有关。
如果您查看迁移所在的文件夹,您应该有 resx
个文件,这些文件包含生成迁移时模型的 "snapshot" 个。因此,它知道是否对模型进行了更改,如果有未决更改,它不会让您执行更新数据库。
要解决此问题,您必须回滚自上次迁移以来对模型所做的任何更改,或者使用 Add-Migration 创建新迁移,然后执行 Update-Database。
如果您与团队合作,如果您和其他人都对模型进行了更改或创建了迁移,那么有时会发生这些问题。检查 this interesting MSDN article 以获得有关如何利用这些问题的一些见解。
我有一个 ASP.NET MVC 项目首先使用 EF 代码和迁移。
我正在尝试将新的 属性 添加到 class。为此,我创建了迁移代码,以便在 table 中添加与 class 相关的特定列。
我的迁移代码如下:
public partial class Add_DataRequisicao_to_BiblRequisicao : DbMigration
{
public override void Up()
{
AddColumn("dbo.BiblRequisicoes", "DataRequisicao", c => c.String(nullable: false, defaultValue: "01/01/1900 00:00"));
}
public override void Down()
{
DropColumn("dbo.BiblRequisicoes", "DataRequisicao");
}
}
要添加到 class 的 属性 如下:
[Required]
[Display(Name = "Data Requisição")]
public string DataRequisicao { get; set; }
当我发布项目并转到项目网站时,我收到以下错误消息:
Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Either write the pending model changes to a code-based migration or enable automatic migration. Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration.
检查数据库,我看到迁移 运行 成功,因为列已创建。在迁移 table 中,还有一个新条目表示迁移 运行。
迁移入口:
MigrationId: 201704261436437_Add_DataRequisicao_to_BiblRequisicao
ContextKey: WebAppInvestigacaoMultimedia.Migrations.Configuration
Model: 0x1F8B0800000...
ProductVersion: 6.1.3-40302
如果迁移 运行 成功并且 属性 的名称和类型与 [=] 的添加列相同,我不明白为什么我会收到错误消息35=].
此错误通常与尚未添加到迁移脚本的模型更改有关。
如果您查看迁移所在的文件夹,您应该有 resx
个文件,这些文件包含生成迁移时模型的 "snapshot" 个。因此,它知道是否对模型进行了更改,如果有未决更改,它不会让您执行更新数据库。
要解决此问题,您必须回滚自上次迁移以来对模型所做的任何更改,或者使用 Add-Migration 创建新迁移,然后执行 Update-Database。
如果您与团队合作,如果您和其他人都对模型进行了更改或创建了迁移,那么有时会发生这些问题。检查 this interesting MSDN article 以获得有关如何利用这些问题的一些见解。