Jai*_*cap 6 entity-framework ef-code-first ef-migrations entity-framework-6
我使用"haward"数据库架构进行了应用迁移.
public partial class CreateCourseCategoryTable : DbMigration
{
public override void Up()
{
CreateTable(
"haward.CourseCategories",
c => new
{
Id = c.Int(nullable: false, identity: true),
Name = c.String(),
Code = c.String(),
})
.PrimaryKey(t => t.Id);
}
public override void Down()
{
DropTable("haward.CourseCategories");
}
}
Run Code Online (Sandbox Code Playgroud)
有这个映射
public class CourseCategoryMapping : EntityTypeConfiguration<CourseCategory>
{
public CourseCategoryMapping()
{
ToTable("CourseCategories", "haward");
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想将模式从"haward"更改为"tr"我不想用这个添加迁移,所以我想直接编辑迁移和映射的源代码.
public partial class CreateCourseCategoryTable : DbMigration
{
public override void Up()
{
CreateTable(
"tr.CourseCategories",
c => new
{
Id = c.Int(nullable: false, identity: true),
Name = c.String(),
Code = c.String(),
})
.PrimaryKey(t => t.Id);
}
public override void Down()
{
DropTable("tr.CourseCategories");
}
}
public class CourseCategoryMapping : EntityTypeConfiguration<CourseCategory>
{
public CourseCategoryMapping()
{
ToTable("CourseCategories", "tr");
}
}
Run Code Online (Sandbox Code Playgroud)
然后重新创建空数据库并发出命令update-database,但它告诉我仍有待处理的更改.
所以我所做的是发出了add-migration命令来检查那些变化.即使没有迁移表,它似乎仍然可以检测到我的编辑(从"haward"到"tr"模式).
模型更改保存在哪里?以及如何直接编辑源代码并重新应用迁移?我知道它不可取,因为这就是迁移的目的.但是如果我只是处于早期开发阶段,我不想特意将这些变化弄得一团糟.
Ric*_*ard 18
TL; DR:这非常复杂 - 以后添加新迁移以纠正问题要容易得多.
实体框架迁移由两部分组成 - 代码和模型的哈希.模型的哈希用于确定模型是否已更改,因此是否需要任何新的迁移.
如果更改模型,则更改哈希值.此哈希存储在MigrationName.designer.cs文件中.您不能只编辑模型并更改migration.cs代码,因为模型不再与模型哈希匹配.您还需要为模型重新生成哈希值.
执行此操作的唯一方法是回滚数据库并更新哈希.
考虑您已应用3次迁移:
如果您想从Migration2开始应用更改...
Update-Database -TargetMigration Migration1 -Force注意 - 这可能会导致数据丢失,因此需要处理数据库的开发副本)Add-Migration xxxxxxxxxxx_Migration2使用迁移的全名,包括日期).这只会更新designer.cs文件Update-Database -TargetMigration Migration2Add-Migration xxxxxxxxxxx_Migration3Update-Database我不确定这是否对其他人有帮助,但我能够通过执行以下操作来编辑和重新应用迁移:
我的迁移非常简单,所以我不确定这是否适用于每个人。
享受!
| 归档时间: |
|
| 查看次数: |
10879 次 |
| 最近记录: |