在我的项目中,我首先使用WebSecurity和EF代码进行迁移.
我有我想要与WebSecurity结合的自定义UserProfile类.
我想在Seed方法的迁移'Configuration类中为用户播种.
所以我试试这个:
#1)
if (!Roles.RoleExists("admin"))
Roles.CreateRole("admin");
if (!WebSecurity.UserExists(AdminUserName))
WebSecurity.CreateUserAndAccount(
AdminUserName,
"admin",
new {Email = "admin@mindmap.pl"});
Run Code Online (Sandbox Code Playgroud)
但它抱怨我应该首先调用WebSecurity.InitializeDatabaseConnection.
好的,这是有道理的.所以我在Global.asax中添加了以下行:
#2)
WebSecurity.InitializeDatabaseConnection(
_connectionStringName,
"UserProfiles",
"Id",
"UserName",
autoCreateTables: true);
Run Code Online (Sandbox Code Playgroud)
但比以下几行:
#3)
var dbMigrator = new DbMigrator(_configuration);
dbMigrator.Update();
Run Code Online (Sandbox Code Playgroud)
抛出错误:
数据库中已经有一个名为"UserProfiles"的对象.
嗯,这很有意义,因为迁移尝试创建刚刚由WebSecurity创建的表.
我找到了一个解决方法:我把#2放在了#1之上.比它工作.
问题是我必须在种子方法中初始化WebSecurity,这有点臭.
我的问题是如何将WebSecurity.InitializeDatabaseConnection移回Global.asax?