2011-03-24 18 views
5

Tengo un problema donde el archivo Entity Framework aparentemente está perdiendo su relación con la cadena de conexión con la que se creó.Entity Framework pierde enlace a la cadena de conexión en Visual Studio

El diseñador de mi archivo .edmx funcionaba perfectamente: podía hacer "Actualizar desde la base de datos" y siempre saltaba al paso del asistente que me permitía agregar tablas, procesos, etc. Ahora cuando hago clic en "Actualizar" de la base de datos ", obtengo el paso del asistente" Elegir conexión de datos "donde quiere que seleccione una nueva base de datos; si sigo estos pasos, creará una nueva cadena de conexión para mí y regenerará todos los objetos como si Estaba empezando desde cero.

El contenido de mi archivo app.config es exactamente como lo era antes del problema, pero modifiqué el archivo y luego lo revertí tal como estaba. Estoy pensando que de alguna manera modificar este archivo desencadena algo que me hace perder el enlace, pero no puedo entender qué es eso.

La clave de cadena de conexión en el archivo de configuración coincide con el atributo CdmEntityContainer en el archivo EDMX.

Incluso he intentado matar mi base de código y volver a verificar desde el control de origen, pero parece que no funciona. Otras personas que trabajan en la misma base de código tienen este mismo problema, por lo que parece que hay algo definitivamente equivocado en algún lugar del proyecto. Pero no hubo cambios relevantes en los archivos .csproj o .sln, simplemente no hay nada que pueda ver en ninguna parte que pueda estar causando esto.

¿Alguna idea? La única solución que veo ahora es eliminar y volver a crear los archivos de Edmx desde cero, pero definitivamente espero encontrar algo mejor.

EDIT: Si genero un nuevo edmx en el proyecto, sin relación con ninguno de los existentes, parece que arregla el resto. Debe "restablecer" lo que sea original en el proyecto. Pero esta no puede ser una solución legítima, así que aún espero algo mejor.

+0

No sé por qué pero lo resolví reiniciando el servicio de mysql –

+0

Esto sigue siendo un problema en VS 2015. – randyh22

Respuesta

1

Si rebota entre entornos (por ejemplo, dev, prod) cuando aparece este problema y está ejecutando una versión diferente de SQL Server (por ejemplo, 2005, 2008) en esos entornos, puede tener algunos problemas. El número de versión de DB se almacena en algún lugar del archivo .edmx.

Si ese es el caso, avíseme y puedo encontrar los detalles y responder con ellos. Si no, no sé lo que podría ser.

¡Buena suerte!

EDIT: Me doy cuenta de que esto probablemente no tiene nada que ver con el problema real, pero quería proporcionar los detalles que mencioné en caso de que alguien más se encuentre con esto. El atributo ProviderManifestToken en el elemento Schema (dentro de .edmx) contiene el número de versión de la base de datos. Tenga en cuenta que en realidad usa el año (por ejemplo, 2005, 2008) en lugar del número de versión verdadero de la base de datos. Si crea un modelo en una versión y lo mueve a otra versión, deberá editar manualmente el archivo para cambiar este valor.

<edmx:Edmx Version="2.0" xmlns:edmx="http://schemas.microsoft.com/ado/2008/10/edmx"> 
    <!-- EF Runtime content --> 
    <edmx:Runtime> 
    <!-- SSDL content --> 
    <edmx:StorageModels> 
     <Schema Namespace="..." Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2005" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl"> 
     ... 
     </Schema> 
    </edmx:StorageModels> 
    </edmx:Runtime> 
</edmx:Edmx> 
+0

Todo está en SQL 2005, y el archivo EDMX en sí mismo no está cambiando. –

2

Acabo de tener esto y lo resolvió.

El problema era que el edmx se estaba utilizando como mi DAL, con su propio proyecto y configuración web, y mi proyecto ASP.NET (el proyecto predeterminado de la solución) llamaba a DAL con su propia configuración web.

Las configuraciones habían sido las mismas para las edades, pero el ASP.El proyecto NET se apuntó a otro servidor (es decir, se cambió la cadena de conexión). Aunque la cadena de conexión del DAL aún no se modificó, es válida y el proyecto ASP.NET no estuvo involucrado cuando desea "Actualizar el modelo desde la base de datos" en el momento del diseño, debe ser algo relacionado con el proyecto predeterminado que choca con él.

Cambié la connstring en la configuración web del proyecto que contiene el edmx para que sea la misma que la del proyecto predeterminado, y funcionó de nuevo.

2

acabo de tener este problema y en mi cadena de conexión que faltaba

nombre de la aplicación = ADO.NET Entity Framework en los datos de origen

1

vieja pregunta, pero pensé que iba a publicar la revisión que trabajó para mí para quienes todavía tengo este problema En mi caso, fue simplemente un problema de contraseña. Estaba trabajando en prueba, pero la cadena de conexión estaba usando la contraseña para producción. Una respuesta más útil por parte de VS podría ser mostrar un tipo de mensaje de "Contraseña o inicio de sesión inválido" ya que ese era realmente el problema.

Cuestiones relacionadas