【发布时间】:2012-09-26 09:43:06
【问题描述】:
我有一个带有 Entity Framework 5、.NET 4.5 和 Visual Studio 2012 的 ASP.NET MVC 4 项目。 在我的解决方案中,我将所有模型放在一个名为 Model 的项目中,将所有存储库和我的 DbContext 放在另一个名为 Data 的项目中。 我使用 Enable-Migrations 命令激活 Data 项目中的迁移。我决定手动处理它们。如果我使用 Add-Migration 命令创建一个新的迁移,一切都会很好。例如,如果我向表中添加一个新列,它就可以正常工作。我可以在数据库架构中看到新列,并且在 _MigrationHistory 表中看到新记录。 此时,随着新列的创建,我需要将此列添加到正确的模型中。所以,我将此方法添加到我的代码优先模型类中并运行该项目。 它删除我的数据库,并使用初始迁移对其进行初始化。 我无法在不丢失所有数据的情况下调整模型。 我怎样才能避免这种行为? 谢谢
更新:
配置.cs
namespace NegoziazioneEventi.Data.Migrations
{
using System;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;
internal sealed class Configuration : DbMigrationsConfiguration<NegoziazioneEventi.Data.NeDataContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
protected override void Seed(NegoziazioneEventi.Data.NeDataContext context)
{
}
}
}
Global.asax 中的Application_Start()
protected void Application_Start()
{
// init basic data on database
System.Data.Entity.Database.SetInitializer(new Models.InitData());
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
_container = Bootstrapper.GetWindsorContainer();
}
【问题讨论】:
-
您可以从 Migrations 文件夹中发布您的 Configuration.cs 代码并从 Global.asax 中发布 Application_Start 方法吗?
-
我已将它们发布在问题中。谢谢
标签: asp.net-mvc database entity-framework visual-studio-2012 entity-framework-migrations