以前,在使用 Code First 创建表时,我使用数据库初始化程序来播种或预填充我的表。这一切都很好,但我想继续使用 EF 4.3 迁移。
我在我的项目中更新到 EF 4.3 并删除了数据库初始化程序代码并将其放在迁移 Configuration.cs 文件的 Seed 方法中。除了我想将默认用户播种到我的用户表中之外,这对我来说一切正常,可以预先填充我的表。
我在我的 Seed 方法中使用以下代码:(目前这不使用 AddOrUpdate 代码,因为我不确定如何在这种情况下使用它 - 因此检查用户名)
// create default User
MembershipCreateStatus status = new MembershipCreateStatus();
User admin = context.Users.Find("TestGuy");
if (admin == null)
{
Membership.CreateUser("TestGuy", "TestGuy123", "testguy@test.com");
if (status == MembershipCreateStatus.Success)
{
admin.Firstname = "Test";
admin.Surname = "Guy";
admin.DateLastActivity = DateTime.Now;
admin.LastActivityRoute = "/Home/Index";
Role adminRole = context.Roles.Find("Administrator");
admin.Roles = new List<Role>();
admin.Roles.Add(adminRole);
}
}
当我尝试运行 Update-Database 时,出现此错误:
The password-answer supplied is invalid.
我认为这取决于我如何调用 CreateUser 但我似乎无法解决如何解决这个错误。我试过只为安全问题和答案输入空值,但这似乎不起作用。
有没有人使用“AddOrUpdate”选项播种用户的例子?
编辑1:
根据以下评论之一,我正在使用 Altairis Security Toolkit 来管理我的会员资格。我的 web.config 设置如下:
<membership defaultProvider="TableMembershipProvider">
<providers>
<clear />
<add name="TableMembershipProvider" type="Altairis.Web.Security.TableMembershipProvider, Altairis.Web.Security" connectionStringName="DataContext" minRequiredPasswordLength="8" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" minRequiredNonAlphanumericCharacters="0" passwordStrengthRegularExpression="" />
</providers>
</membership>
编辑2:
我也在 Altairis 论坛上将此作为公开票。 http://altairiswebsecurity.codeplex.com/workitem/32273
编辑 3:
为了让这个工作没有任何错误,我必须按如下方式设置我的代码:
// create default User
MembershipCreateStatus status = new MembershipCreateStatus();
User admin = context.Users.Find("TestGuy");
if (admin == null)
{
Membership.CreateUser("TestGuy", "TestGuy123", "testguy@test.com", null, null, true, out status);
if (status == MembershipCreateStatus.Success)
{
admin = context.Users.Find("TestGuy");
admin.Firstname = "Test";
admin.Surname = "Guy";
admin.DateLastActivity = DateTime.Now;
admin.LastActivityRoute = "/Home/Index";
Role adminRole = context.Roles.Find("Administrator");
admin.Roles = new List<Role>();
admin.Roles.Add(adminRole);
}
}
运行 Update-Database 但没有生成新用户时,以上内容现在将编译。如果有人有建议尝试,那就太好了!
谢谢,
富有的