0

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.

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

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

4

1 回答 1

1

该错误看起来像是您不止一次地初始化数据库连接,而不是遇到迁移问题。

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

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

它的代码看起来像这样

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

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

一旦你这样做了,你也可以从过滤器文件夹中删除 InitializeSimpleMembership 文件。

这将确保InitializeSimpleMembership只调用一次。

于 2013-06-02T22:00:04.123 回答