Asp.net mvc Can';t首先用EF代码更新数据库
我使用的是EF代码优先迁移。我在模型中添加了一个新属性,但它在数据库中不作为列反映 配置.csAsp.net mvc Can';t首先用EF代码更新数据库,asp.net-mvc,ef-code-first,entity-framework-migrations,Asp.net Mvc,Ef Code First,Entity Framework Migrations,我使用的是EF代码优先迁移。我在模型中添加了一个新属性,但它在数据库中不作为列反映 配置.cs public Configuration() { AutomaticMigrationsEnabled = true; } Global.asax.cs Database.SetInitializer(new MigrateDatabaseToLatestVersion<DbContext, DbMigrationsConfiguration<DbContext>>(
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
Global.asax.cs
Database.SetInitializer(new MigrateDatabaseToLatestVersion<DbContext, DbMigrationsConfiguration<DbContext>>());
using (var context = new MyDbContext())
{
context.Database.Initialize(true);
}
Database.SetInitializer(新的MigrateDatabaseToLatestVersion());
使用(var context=new MyDbContext())
{
context.Database.Initialize(true);
}
我已经尝试了更新数据库
。它说没有挂起的迁移
编辑:
我的EF是一个单独的类库项目。
还有一个类库项目存储所有模型。
主(启动)项目是一个MVC项目
我应该在哪里包括迁移
另外,AddMigrationsInitial总是提供空的Up()和Down()方法。Verbose可以解决这个问题。在包管理器控制台中运行
Update-Database –Verbose
在执行“更新数据库”命令之前,您是否运行了?
addmigrations命令将生成更新数据库所需的迁移脚本
另外,您的数据库中是否有_MigrationsHistory表
您能否将代码更新为指向您的MyDbContext
而不是基本的DbContext
?我相信dbmigerationsconfiguration>()
也应该指向您的dbcontext类型
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, DbMigrationsConfiguration<MyDbContext>>())
Database.SetInitializer(新的MigrateDatabaseToLatestVersion())
这对我来说很有效,首先备份数据库,然后删除project中的迁移
文件夹,并删除数据库中的\u迁移历史
表
然后运行这个命令
Enable-Migrations -EnableAutomaticMigrations -Force
然后添加迁移
Add-Migration InitialMigration
最后用
Update-Database
*添加您的新模型:用户模型-id、fname、lname、地址等 *在应用程序数据库上下文中将新模型定义为新的示例集: 公共数据库集用户{get;set;} *创建迁移:添加迁移YourMigrationName
*更新数据库我有迁移历史记录。我删除了它并再次运行更新数据库。我还尝试了添加迁移命令,但没有成功。另外,因为我已经启用了AutomaticMigrations,所以我不应该被迫使用添加迁移…对吗?啊,是的,这是正确的。您不需要显式运行addmigrations命令。自动迁移应该与更新数据库一起进行。我被你代码中的一句话弄糊涂了——你的上下文是DbContext还是MyDbContext?它的MyDbContext。现在至少我在Up()和Down()方法中有了代码。但是我被困在“数据库中已经有一个名为”的对象上。尝试添加Migration InitialMigration-ignorechanges并将AutomaticMigrationsEnabled设置为false;我已经尝试添加迁移InitialMigration-IgnoreChanges。然后,我丢失了Up()和Down()方法中的所有代码,并且数据库没有使用新列进行更新。将尝试使用AutomaticMiggerationsEnabled=false;它不起作用。“数据库中已经有一个名为……的对象。”“添加迁移初始迁移-IgnoreChanges”重新标记,但什么也没有发生。@Billa你的确切意思是什么?在我的评论中添加样式?不要在回答部分写评论。