Estoy tratando de diseñar un modelo de entidad para una aplicación que use membresía ASP.Net para su autenticación de usuario. En la mayoría de los esquemas de base de datos que creo, los registros generalmente terminan relacionados con los usuarios a través del campo UserId en la tabla aspnet_users. Eso funcionó bien para mí en el pasado, pero ahora que estoy usando EF, tengo algunos problemas conceptuales para descubrir cómo voy a hacer referencia al usuario de una entidad.¿Cómo usaría Entity Framework (1.0) con membresía ASP.Net?
Por ejemplo, supongamos que tenemos una entidad de "publicación" que contiene una propiedad "postedBy". ME GUSTARÍA poder obtener el nombre de usuario del usuario que creó esta publicación con algo como post.user.username, pero soy cauteloso de crear una entidad basada en la tabla aspnet_user por temor a crear un modelo que permita omito la clase de Membresía cuando hago cambios a la base de datos.
He considerado simplemente dejar el campo post.userId como guid y luego exigir que cualquier código que necesite saber el nombre de usuario use ese guid para obtener el usuario de la clase Membership, pero eso parece "inelegible".
¿Alguien tiene alguna recomendación para los diseños de modelo de entidad que se integran con la Membresía? Sería razonable que suceda con una entidad de usuario de "solo lectura".
Entonces, si tiene columnas de referencia de "usuario" (como el publicado) en su tabla de datos, sugiera que esté mapeada en una tabla de usuario separada (ya que no debe haber ningún vínculo entre las tablas de proveedor y appdata). Entonces, ¿su base de datos contiene 2 tablas de usuario separadas que luego deben sincronizarse (es decir, mediante desencadenadores)? Si no, ¿podría explicar cómo lo hace? Tengo el mismo problema aquí, pero no necesito poder cambiar de proveedor (no sucederá ...). –
No sincronizamos, exactamente. Tenemos una tabla SystemUser que no está estrictamente relacionada con aspNet_Users. Por ejemplo, anular el registro de la membresía de ASP.NET no elimina el registro SystemUser. Queremos mantener eso para que los campos "CreatedBy" en otros registros aún puedan señalar algo. Así que hemos personalizado el AccountController para actualizar tanto la membresía como nuestra propia tabla cuando los usuarios son agregados o eliminados. –
Bien, gracias. Me olvidé del riesgo de perder las referencias. Tu implementación me parece buena. –