我有一个使用Entity Framework创建的现有Code First模型。 已经创建了表和SQL Express,并且在大多数表中都有记录。
现在我想使用Code First方法添加一个新表。
问题在于我还没有找到任何简单的解决方案来自动添加。我尝试了以下方法:
向MyContext构造函数添加以下行:
Database.SetInitializer< MyContext>(new MigrateDatabaseToLatestVersion< MyContext,Configuration>());
它的唯一工作方式是手动解决方法,将所有现有数据备份到CSV,删除整个数据库,然后使用BULK INSERT将数据放回原处。然而,这是我想避免的手动操作。
EF6是否仍然无法自动处理这样的基本模型更改?
答案 0 :(得分:0)
如果您的数据库由实体框架创建,则它有一个名为" __ MigrationHistory"的表。实体框架创建/使用该表来保存数据库的迁移历史记录。 您可以为DbContext添加配置:
public class Configuration : DbMigrationsConfiguration<YourDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
protected override void Seed(YourDbContext context)
{
base.Seed(context);
}
}
在您的应用程序起始位置(在winForms应用程序program.cs-&gt;主类中),您应该写:
System.Data.Entity.Database.SetInitializer(new
System.Data.Entity.MigrateDatabaseToLatestVersion<YourDbContext,
YourNameSpace.Configuration>());