net mvc how framework español asp and asp.net-mvc entity-framework asp.net-membership asp.net-mvc-4 entity-framework-5

asp.net mvc - mvc - Cómo inicializar la base de datos con Entity Framework y tablas de Membresía



mvc add entity framework (1)

Tengo una aplicación web MVC4 que usa Entity Framework 5.0 Code First.

En Global.asax.cs tengo un bootstrapper que inicializa Entity.Database, fuerza a la base de datos a ser inicializada e inicializa la base de datos para la membresía. El código es este:

System.Data.Entity.Database.SetInitializer(new DatabaseContextInitializer()); Database.Initialize(true); WebSecurity.InitializeDatabaseConnection(DEFAULTCONNECTION, "UserProfile", "UserId", "UserName", autoCreateTables: true);

El DatabaseContextInitializer es muy simple por el momento:

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"}) } }

El problema es que no puedo crear Usuario para la membresía con:

WebSecurity.InitializeDatabaseConnection(DEFAULTCONNECTION, "UserProfile", "UserId", "UserName", autoCreateTables: true);

Porque tengo un problema con eso, la base de datos no se crea. ¿Cómo se inicializa un usuario predeterminado para su base de datos con Entity Framework 5.0 y Asp.Net MVC 4?


Eche un vistazo al siguiente artículo sobre el enfoque recomendado para sembrar su base de datos usando migraciones.

Estos son los pasos:

  1. Cree una nueva aplicación ASP.NET MVC 4 utilizando la Plantilla de Internet
  2. En la consola del administrador de paquetes, escriba el siguiente comando:

    enable-migrations

  3. Esto creará un archivo ~/Migrations/Configuration.cs en el que puede sembrar su base de datos:

    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" }); } } }

  4. Especifique la membresía y los proveedores de roles en su 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>

  5. Ejecute la migración en su consola de administrador de paquetes:

    update-database -verbose