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.
当我尝试从包管理器运行它时。
似乎手动运行迁移并使它们自动化是不兼容的?!
答案 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
仅被调用一次。