Tengo un objeto de marco de una entidad y cuando lo agrego a mi proyecto, connectionstring
se agrega app.config
en la connectionstring
sección, pero cuando quiero crear uno nuevo entitycontext
y usarlo connectionstring
, aparece este error
entity-framework
entity-framework-4
usuario421413
fuente
fuente
Respuestas:
Sospecho que su problema proviene del hecho de que tiene más de un proyecto en su solución y el que contiene los elementos del marco de su entidad, incluidos los
edmx
archivos, NO es el proyecto de inicio de las soluciones. En este caso, incluso si la cadena de conexión existe en elapp.config
proyecto EF , CLR aún no puede encontrarla en tiempo de ejecución. Por ejemplo, si tiene un sitio web y un proyecto de EF en su solución, debe copiar la cadena de conexión de los proyectos de EFapp.config
a los de su sitio webweb.config
. Básicamente, cualquier dato de cadena de conexión debe existir en el archivo de configuración del proyecto desde el cual los hilos .Net iniciados por CLR (es decir, su proyecto de inicio). Si este no es su caso, simplemente abra suedmx
archivo, haga clic derecho en su superficie, seleccione propiedades y copie la cadena de conexión y péguela en laapp.config
sección Cadena de conexión. De esta manera, puede asegurarse de tener la correcta en su configuración.EDITAR:
Como puede ver aquí en Documenation en ObjectContext Constructor , el primer parámetro es el nombre de la cadena de conexión, que es el código generado en el momento en que crea su EDM. Si, de alguna manera, se cambia el nombre de la cadena de conexiones, todo lo que necesita hacer es hacer clic derecho en su modelo y seleccionar "Actualizar modelo de la base de datos ...", luego siga el asistente para actualizar su confing y diseñador para reflejar esto cambio.
fuente
Debe copiar la cadena de conexión en app.config a su web.config, o copiar todo el archivo al proyecto que muestra el resultado. Es una de las condiciones para consumir el marco.
fuente
Me encontré con este problema cuando intenté poner mi lógica de base de datos personalizada en un .dll para ser utilizada por múltiples proyectos en mi solución.
Si bien el archivo .dll tenía el archivo app.config correcto, no funcionó. Entity frameworks quería la información de conexión en la aplicación.config del .exe. Copiar la información allí funcionó bien.
La solución de Morteza de pegar la cadena de conexión directamente en el .edmx no funcionó para mí, ya que no me permitía pegar el valor allí, aunque eso es precisamente lo que quería poder hacer.
fuente
Hola, tuve este problema y me estaba volviendo loco. De todos modos, finalmente descubrí cuál era el problema. Lo primero que tiene que hacer es asegurarse de que el
connectionstrings
enapp.config
yweb.config
son los mismos. Luego debe hacer doble clic en el.edmx
archivo para poder ver las tablas. Una vez que haga clic en cualquier lugar cerca de las tablas, pero no en las tablas, vaya a las propiedades. En la lista desplegable, seleccioneConceptualEntityModel
y busque el Nombre del contenedor de la entidad y recuérdelo bien.A continuación, vaya al diseñador del archivo edmx y abra los constructores. (el diseñador es la subcarpeta del archivo edmx) los constructores deben tener dos parámetros en el parámetro BASE
Este es uno de ellos. el primer parámetro debe tener el nombre del archivo del proyecto en el que se encuentra el
.edmx
archivo. El segundo parámetro debe tener el nombre del contenedor de la entidad de las propiedades que mencioné anteriormente. no olvide organizar todos los constructores con:base("", "")
Al menos ese era mi problema y mi problema se resolvió así. Espero que puedas resolver el tuyo así.
fuente
Tenía una variación sobre esto que nadie parecía cubrir.
Tenía un proyecto principal con un par de modelos y un Proyecto de prueba que contenía pruebas unitarias. El Proyecto de prueba estaba funcionando, pero luego se detuvo con el error mencionado en el OP. No había hecho ningún cambio de nombre o movimiento del archivo EDMX.
Muchos de los consejos mencionaron la comparación de archivos .config, pero mi proyecto no tenía ninguno.
Al final, copié el archivo app.config del proyecto principal en mi proyecto de prueba y luego funcionó. Si este es el paso correcto o si presentará problemas de mantenimiento cuando se agreguen modelos adicionales, no lo sé, pero al menos mis pruebas unitarias se están ejecutando correctamente nuevamente ahora.
fuente
Aunque la respuesta de Morteza Manavi resuelve este problema, otra solución es construir la cadena de conexión dinámicamente y pasarla al constructor para su ObjectContext:
Esto elimina la necesidad de copiar la información de la cadena de conexión a la configuración de la aplicación de su proyecto de inicio que, al menos en mi caso, no era deseable.
fuente
Olvidé agregar providerName = "System.Data.EntityClient" como atributo en la cadena de conexión. Esto dio lugar a este error, así
en vez de
fuente
Acabo de descubrir que si se crea una aplicación en IIS desde VS2010 a dos niveles desde la raíz del sitio web, se produciría este error. No estoy seguro de por qué sucede, necesitaría investigar más. Por ejemplo, si su aplicación está en esta ruta:
/admin/advertiser
el error aparecerá si no tiene/admin
un directorio virtual en su sitio IIS.Todo lo que hice fue crear un
admin
directorio vacío en mi.../intepub/wwwroot
error desapareció.Descubrirá que no podrá comenzar a depurar hasta que realice el paso anterior.
Tuvimos este problema en nuestro equipo en el pasado, nos tomó un tiempo recordarlo, pero así fue exactamente como lo solucionamos antes.
fuente
Estoy usando n'tier architecture y tengo el mismo problema, pero este me ayuda. Espero que esto te ayude. Primero tiene lo mismo
connection string
sobre ustedlibraries
donde puede acceder a DB como enapp.config
yweb.config
después de eso simplemente agrega un constructor sobrecargado en el archivo .edmx (Model.context.cs) que ahora tiene dos constructores, uno es predeterminado y el otro que acaba de agregar ( sobrecargado).fuente
Tenía una biblioteca de clase que tampoco quería trabajar con EF. Después de copiar el archivo app.config (o solo la sección de conexiones) de mi biblioteca de clases al proyecto exe, ¡la conexión funcionó bien! Probablemente se espera que el archivo de configuración esté en la misma carpeta que el proyecto exe y, por lo tanto, no se encontró. ¡Así que siempre tenga mucho cuidado cuando use un archivo de configuración en un proyecto de biblioteca de clases!
fuente
Bueno ... este problema podría ser también por una razón muy simple (tonta) ... Copié un archivo de otro proyecto y olvidé cambiar la ConnectionString en EntityDataSource ... ya que estaba al comienzo del proyecto y sucedió en la página de inicio de sesión, pensé que era algo en la configuración, pero era solo el nombre de cadena de conexión incorrecto (y DefaultContainerName).
fuente