实体框架5,迁移,MVC 4,update-database -force - 在服务器上运行的最佳方式

时间:2013-06-02 21:24:39

标签: asp.net asp.net-mvc entity-framework asp.net-mvc-4 ef-migrations

Visual Studio MVC 4 Web应用程序,SQL Server 2008 R2,实体框架5

我启用了自动迁移(在configuration.cs中):

  public Configuration()
  {
     AutomaticMigrationsEnabled = true;
     AutomaticMigrationDataLossAllowed = false;
  }

作为预防措施,DataLossAllowed已禁用。手动,本地和服务器上运行此迁移的最佳方法是什么?

我收到此错误:

The "WebSecurity.InitializeDatabaseConnection" method can be called only once.

当我尝试从包管理器运行它时。

似乎手动运行迁移并使它们自动化是不兼容的?!

1 个答案:

答案 0 :(得分:1)

该错误看起来好像是多次初始化数据库连接,而不是出现迁移问题。

WebSecurity.InitializeDatabaseConnection是使用[InitializeSimpleMembership]属性时调用的,默认情况下在MVC4中装饰Accounts控制器。

由于您只希望调用一次,因此您应该从帐户控制器中删除该属性,并将WebSecurity.InitializeDatabaseConnection的调用添加到 AuthConfig文件,该文件在应用程序启动时调用Global.asax中。您可以直接将其放入global.asax中的应用程序启动方法或制作您自己的文件,但AuthConfig在我看来似乎是最适合它的地方。

它的代码看起来像这样

WebSecurity.InitializeDatabaseConnection("DatabaseConnectionString","UserProfile","UserId","UserName", false);

DatabaseConnectionString重命名为web.config中连接字符串的名称 如果您不使用Db First,则false也可能为True。

执行此操作后,您也可以从filters文件夹中删除InitializeSimpleMembership文件。

这将确保InitializeSimpleMembership仅被调用一次。