2009-08-05 25 views
5

Tengo un modelo, Docs, con una columna guid, author_id, que debe hacer referencia a un MembershipUser.ASP.NET MVC: relación entre modelos y MembershipUsers

Estoy usando el MembershipProvider estándar (solo cambié el nombre de db), y por supuesto no tengo un modelo para MembershipUsers.

Puedo definir fácilmente algunos métodos en la clase Docs para obtener MembershipUser para un Doc y todos los Documentos para un MembershipUser, pero algunas cosas son complicadas (enumerar usuarios, mostrar cuántos documentos tiene cada usuario); además, siento que estoy usando MVC de una manera extraña: me parece que sería más fácil si tuviera un modelo MembershipUsers ...

¿Cómo puedo implementar esta relación? ¿Debo implementar un modelo para MembershipUsers?

gracias

actualización

: que se dan cuenta de que no estaba claro en absoluto.

Digamos que quiero enumerar todos mis usuarios y sus documentos. Una forma de hacer esto es:

ViewModel model = new ViewModel() 
{ 
    Users = from MembershipUser user in Membership.GetAllUsers(page, pagesize, out totalusers) 
      select new UserWithDocs 
      { 
       User = user, 
       Docs = context.Docs.Where(c => c.author_id == (Guid) user.ProviderUserKey) 
      }, 
    UsersCount = totalusers 
}; 

Esto funciona, pero genera una consulta independiente para cada usuario.

Pude obtener una serie de guías de usuario y luego consultar los Documentos where author_id IN list_of_guids, pero luego debía asociar manualmente cada documento a su autor.

¿Cuál es la mejor solución?

+0

¿Estás tratando de cargar todos los usuarios y todos los documentos? Esto suena como una gran cantidad de datos. ¿Por qué no separar sus puntos de vista en una lista de usuarios y luego profundizar en una lista de documentos para el usuario seleccionado? Como ha señalado, si desea hacer esto en dos consultas, deberá asociar manualmente los documentos a los usuarios que utilizan un bucle foreach. – Junto

Respuesta

0

no estoy seguro si lo entiendo correctamente, pero puede utilizar la clase MembershipUser como su modelo para los usuarios. si desea hacer referencia al usuario a su modelo "doc", simplemente puede agregar una propiedad "Autor" a su clase de modelo y, cuando recupere el modelo de DB, también puede obtener al usuario.

la clase de miembro contiene algunos métodos estáticos para listar todos los usuarios, añadir/eliminar usuarios, etc.

Cuestiones relacionadas