Pat*_*ins 22 asp.net-mvc entity-framework asp.net-membership asp.net-mvc-4 entity-framework-5
我有一个使用Entity Framework 5.0 Code First的MVC4 Web应用程序.
在Global.asax.cs中,我有一个初始化Entity.Database的引导程序,强制初始化数据库并初始化成员资格数据库.代码是这样的:
System.Data.Entity.Database.SetInitializer(new DatabaseContextInitializer());
Database.Initialize(true);
WebSecurity.InitializeDatabaseConnection(DEFAULTCONNECTION, "UserProfile", "UserId", "UserName", autoCreateTables: true);
Run Code Online (Sandbox Code Playgroud)
DatabaseContextInitializer目前非常简单:
public class DatabaseContextInitializer : DropCreateDatabaseIfModelChanges<DatabaseContext>
{
protected override void Seed(DatabaseContext dbContext)
{
base.Seed(dbContext);
db.Set<Workout>().Add(new Workout {Id = 1, Name = "My First workout user1"})
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我无法通过以下方式为会员创建用户:
WebSecurity.InitializeDatabaseConnection(DEFAULTCONNECTION, "UserProfile", "UserId", "UserName", autoCreateTables: true);
Run Code Online (Sandbox Code Playgroud)
因为我有一个问题,即没有创建数据库.如何使用Entity Framework 5.0和Asp.Net MVC 4初始化数据库的某些默认用户?
Dar*_*rov 35
请查看以下文章,了解使用迁移为数据库设定种子的建议方法.
以下是步骤:
在包管理器控制台中,键入以下命令:
enable-migrations
Run Code Online (Sandbox Code Playgroud)这将创建一个~/Migrations/Configuration.cs文件,您可以在其中为数据库设定种子:
using System.Data.Entity.Migrations;
using System.Linq;
using System.Web.Security;
using WebMatrix.WebData;
internal sealed class Configuration : DbMigrationsConfiguration<MvcApplication1.Models.UsersContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(MvcApplication1.Models.UsersContext context)
{
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
if (!Roles.RoleExists("Administrator"))
{
Roles.CreateRole("Administrator");
}
if (!WebSecurity.UserExists("john"))
{
WebSecurity.CreateUserAndAccount("john", "secret");
}
if (!Roles.GetRolesForUser("john").Contains("Administrator"))
{
Roles.AddUsersToRoles(new[] { "john" }, new[] { "Administrator" });
}
}
}
Run Code Online (Sandbox Code Playgroud)在web.config中指定成员和角色提供程序:
<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
<providers>
<clear/>
<add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
</providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear/>
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
</providers>
</membership>
Run Code Online (Sandbox Code Playgroud)在包管理器控制台中运行迁移:
update-database -verbose
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
39961 次 |
| 最近记录: |