2012-08-31 24 views
7

He estado usando el proveedor de membresía de ASP.NET de la manera que se presenta y ha estado muy bien al servicio de mis propósitos básicos. Una cosa que me doy cuenta es que instala un montón de Stored Procs, etc. en la base de datos.Proveedor de membresía de ASP.NET con EF

¿Hay una implementación EF de membresía ASP.NET? o habrá?

Tengo un nuevo proyecto que tendré que ampliar la funcionalidad de los proveedores de Membresía con roles y autorización a través de alguna GUI.

Por otra parte, cada vez que uso esto, tengo dos cadenas de conexión en mi web.config uno para DbContext uno para servicios de aplicaciones particularmente para el proveedor de Membresía. ¿Por qué no puedo tener solo uno?

Respuesta

0

Existen sistemas de gestión de membresía para MVC3 que puede consultar o agregar a su proyecto.

Puede jugar con ellos y ver cómo funcionan. Es simple una vez que sabes dónde buscar y puedes crear la tuya propia.

El Membership Class y MembershipUser Class contiene toda la información del usuario. Por ejemplo, para un-aprobar un usuario puede hacer esto:

MembershipUser user = Membership.GetUser("userName"); 
user.IsApproved = false; 
Membership.UpdateUser(user); 

Y si desea eliminar un usuario, puede utilizar Membership.DeleteUser("userName");.

El Roles Class tiene toda la información asociada a la función. Al igual que Roles.GetUsersInRole("roleName") devolverá una lista de todos los usuarios en la función roleName. Roles.CreateRole("roleName"); creará un rol y Roles.DeleteRole("roleName"); eliminará un rol.

Si necesita más que el valor predeterminado, puede mirar Implementing a Membership Provider.

En cuanto a tener dos bases de datos, esto no es necesario. Puede agregar todas las tablas ASP.NET, procedimientos almacenados, etc. a su base de datos utilizando la herramienta Aspnet_regsql. Eche un vistazo al Installing the Database using Aspnet_regsql.exe. Esto le permitirá tener solo una base de datos, por lo que puede eliminar la cadena de conexión asp.net en su Web.Config y luego cambiar el AspNetSqlMembershipProviderAspNetSqlProfileProviderAspNetSqlRoleProvider y tal vez otros, para usar la cadena de conexión a su base de datos principal.

0

Para el proveedor de membresía ASP.NET y la implementación de roles en Entity Framework, necesita importar todas las vistas de ASPNETDB (base de datos de membresía) en el archivo EDMX. p.ej. vw_aspnet_MembershipUsers, vw_aspnet_Roles, vw_aspnet_UsersInRoles, vw_aspnet_Users, etc ...

Luego, la membresía se ejecutará a través de EF. Por lo tanto, puede proporcionar GUI usando las funciones a continuación.

aquí está el código del controlador. p.ej.

// GET: /Membership/Edit/5 

    public ActionResult Edit(Guid id) 
    { 
     var recordToEdit = (from r in _db.vw_aspnet_Users where r.UserId == id select r).First(); 
     return View(recordToEdit); 
    } 

    public ActionResult Index() 
    { 
     return View(_db.vw_aspnet_MembershipUsers.ToList()); 
    } 

Ahora, cómo combinar la ASPNETDB a la base de datos existente, para hacer una sola cadena de conexión en web.config. (Su pregunta: ¿Por qué no puedo tener una sola?)

Eso también es posible mediante los siguientes pasos.

ASPNETDB.MDF es una base de datos de proveedores de membresía y se utiliza para almacenar y recuperar datos de membresía de la base de datos y aquí vamos a ver cómo crear una base de datos de proveedores de membresía. El comando utilizado para crear Aspnetdb.mdf es ASPNET_RegSQL.EXE

1.Inicio-> Programas-> Microsoft visual studio 2005-> herramientas de Visual Studio-> Símbolo del sistema de Visual Studio 2005. Aspnet_regsql.exe escribir en el símbolo del sistema de Visual Studio 2005

  1. Aparecerá un asistente con el título”Bienvenido al asistente de Asp.Net SQL Server”. Aquí debe hacer clic en Siguiente

  2. A continuación, se mostrará un asistente con "Seleccionar opción de configuración". Ahora tenemos que seleccionar la opción de configuración "Configurar servidor SQL para la aplicación es el predeterminado". Seleccione cuál quiere y luego.

  3. Se mostrará una ventana con "Seleccionar base de datos de servidor SQL" Ahora tenemos que seleccionar nuestra base de datos de servidor sql. Aquí debe establecer el servidor, el tipo de autenticación y la base de datos. Si selecciona el nombre predeterminado, se seleccionará "aspnetDb.mdf". Si quiere modificar una base de datos existente, seleccione esa base de datos.

5. Ahora se mostrará una confirmación con el encabezado "Confirmar su configuración". Ahora compruebe el nombre del servidor y el nombre de la base de datos y haga clic en siguiente.

  1. Aparecerá una ventana con "La base de datos ha sido creada o modificada".Ahora haga clic en Finalizar

Tenga cuidado en los pasos anteriores que necesita para seleccionar la base de datos existente, algunas tablas (11+), puntos de vista, se añadirán los procedimientos almacenados de la afiliación y roles a su base de datos existente ....

Disfrútelo ... Gracias ...

+0

¿cómo hacer esto si está utilizando primero el código DbContext? – DarthVader

+0

Para el primer enfoque de código, los comandos que no son de consulta pueden enviarse a la base de datos utilizando el método ExecuteSqlCommand en la base de datos. context.Database.ExecuteSqlCommand (""); –

+0

bien no le interesan las consultas sql o los procesos almacenados. ¿Quién los está utilizando? – DarthVader

2

Los proveedores universales son lo que busca: http://nuget.org/packages/Microsoft.AspNet.Providers.Core

Estos se implementan utilizando código de EF Primeros 5 internamente, que se van a realizar las DBContexts internos pública una vez que nos aseguramos de que todo funciona sin problemas.

Cuestiones relacionadas