5

Equipo, tengo una aplicación ASP.NET MVC que estoy implementando. Cuando lo despliego, la aplicación funciona bien, pero cuando llamo al Membership.CreateUser, termina intentando crear la base de datos aunque ya exista. ¿Qué debo hacer para obtenerlo de manera que no intente llamar al CreateMembershipEntities ya que la base de datos ya existe?Detener la inicialización de la base de datos EF para DefaultMembershipProvider

He intentado Database.SetInitializer a un inicializador que no hace nada, he intentado eliminar el defaultConnectionFactory en el Web.config - Actualmente no tengo opciones.

Espero su ayuda!

ACTUALIZACIÓN

Me acabo de enterar ayer que la razón por la que está tratando de crear la base de datos se debe a que los servidores anfitriones no permiten la conexión para consultar sysdatabases y por lo que nunca existe la base de datos y es por lo tanto siempre tratando de crearlo Parece que tendré que volver al antiguo proveedor de membresía de AspNet y también alejarme del primer modelo de código EF.

<rant> En una nota más personal, quería hacerle saber a Microsoft, ¡gracias por nada! Este primer modelo de código funciona bien con aplicaciones que se implementan en servidores que usted posee, pero los pone en la nube (que es donde todo va de todos modos) y no tiene suerte. Buen trabajo Microsoft! ¿Por qué no intentar conectarse a la base de datos para ver si ya existe?!? Si la conexión tiene éxito, debe existir; de lo contrario, supongo que no. </rant>

+0

"* He intentado Database.SetInitializer a un inicializador que no hace nada *": La forma normal de deshabilitar la inicialización de la base de datos es configurar el inicializador en 'null', es decir' Database.SetInitializer (null) '. Pero no tengo idea de qué tienen que ver las cosas de EF con el ASP.NET MembershipProvider que usa Stored Procedure y sus propias conexiones (a menos que haya personalizado el proveedor de alguna manera). Me sorprendería si configurar el inicializador a 'null' resuelve el problema. – Slauma

+0

@Slauma El problema que estoy teniendo es que está tratando de crear las tablas de membresía cuando ya existen en la base de datos de producción. No tengo acceso a la base de datos DROP y CREATE en el servidor de producción. Otra cosa que vale la pena señalar aquí es que el servidor de producción es GoDaddy y el proveedor de membresía que estoy usando es el DefaultMembershipProvider que configura en una nueva aplicación ASP.NET MVC 4. Funciona muy bien en mi caja de desarrollo. –

Respuesta

1

dar un vistazo aquí: http://www.qualitydata.com/learn/web-config-membership-provider-settings Se muestra la sección de configuración de miembro de la web.config. Tienes que escribir una sección similar y poner connectionStringName = "Your Connection String". En su cadena de conexión, especifica la información de la base de datos ya existente.

+0

Gracias por sus respuestas. Déjame hacerte una pregunta rápida. Recientemente descubrí, como ayer por la tarde, que la razón por la que estoy teniendo tantos problemas es porque los servidores anfitriones no permiten que la cadena de conexión consulte 'sysdatabases'. Y dado que estoy utilizando el primer enfoque del código EF, el proveedor de membresía predeterminado intenta validar la existencia de la base de datos. ¿Debería volver al antiguo proveedor de membresía de AspNet? Simplemente no es tan limpio. –

+0

La respuesta al problema fue usar el SqlMembershipProvider en lugar del DefaultMembershipProvider. SqlMembershipProvider se ajusta a las interfaces de proveedor de membresía pero funciona como solía hacerlo; no intenta crear una base de datos si no existe. Mi consejo para todos es NO usar el código EF primero. –

+0

El enlace en esta respuesta es obsoleto ... sin él, ¿no crees que hay alguna información útil en la respuesta? – ChrisW

Cuestiones relacionadas