Tag: 代码优先迁移

代码优先迁移和初始化错误

我不确定如何使用代码首次迁移function。 根据我的理解,它应该创建我的数据库(如果它已经不存在),并根据迁移文件将其更新为最新的模式。 但我正在努力解决这个问题,因为我总是遇到很多错误而且我不确定如何正确使用它。 internal class Program { private static void Main() { EntityFrameworkProfiler.Initialize(); Database.DefaultConnectionFactory = new SqlCeConnectionFactory(“System.Data.SqlServerCe.4.0″); Database.SetInitializer(new MigrateDatabaseToLatestVersion()); using (var context = new MyContext()) { var exists = context.Database.Exists(); if (!exists) { context.Database.Create(); } var element = context.Dummies.FirstOrDefault(); } } } public class MyContext : DbContext { public MyContext() : base(string.Format(@”DataSource=””{0}”””, @”C:\Users\user\Desktop\MyContext.sdf”)) { } […]

如何在__MigrationHistory表中添加其他列?

根据自定义迁移历史记录表 ,我应该能够添加一列,但是我无法找到有关如何实际添加新列的任何示例。 我很担心放置实际属性的位置以及如何将其配置到现有的__MigrationHistory表。 从文档中,我可以自定义表配置。 protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity().ToTable(tableName: “MigrationHistory”, schemaName: “admin”); modelBuilder.Entity().Property(p => p.MigrationId).HasColumnName(“Migration_ID”); } …但我无法修改HistoryRow实体。 我应该根据HistoryRow实体添加新的派生类型吗?

在EF5 Code First中更改列默认值

我正在尝试使用CF为现有数据库构建模型。 我有一个专栏,我忘了设置一个合理的默认值。 而不是通过改变它来破坏初始迁移的纯度,我只是想我创建另一个迁移(这是迁移的目的,对吧?:) public override void Up() { AlterColumn(“Config”, “DefaultTaxPerDollar”, c => c.Decimal(nullable: false, precision: 19, scale: 5, defaultValue: 0.087m)); } public override void Down() { AlterColumn(“Config”, “DefaultTaxPerDollar”, c => c.Decimal(nullable: false, precision: 19, scale: 5, defaultValue: 0.0m)); } 但是这会产生Column already has a DEFAULT bound to it. 来自SQL Server的错误。 如何使用CF迁移更改默认值? 或者,如何简单地删除默认值(然后使用不同的值重新创建它)? 编辑: 这是SQL生成的: ALTER TABLE […]