c# - visual - no se ha declarado el elemento 'configuration'




No se pudo encontrar una cadena de conexión llamada 'MyEntities' en el archivo de configuración de la aplicación (15)

Estoy usando Entity Framework y ASP.NET MVC 4 para construir una aplicación

Mi solución se divide en dos proyectos;

  • Una biblioteca de clases que incluye mi archivo de modelo de datos (.edmx) y algunas interfaces personalizadas
  • El proyecto MVC 'contenedor' que hace referencia a la biblioteca de clases anterior

Mi problema es que cuando intento usar el DbContext ' MyEntites ' obtengo el siguiente error:

No se pudo encontrar una cadena de conexión llamada 'MyEntities' en el archivo de configuración de la aplicación.

Supongo que el problema tiene algo que ver con el hecho de que la cadena de conexión se encuentra dentro de app.config de la biblioteca de clases en lugar del proyecto MVC.

¿Alguien tiene alguna sugerencia?


Migraciones regulares

Hay dos opciones: la primera que todos han sugerido aquí es asegurarse de que la cadena de conexión esté en el archivo web.config del proyecto. Al trabajar con cadenas de conexión desde la configuración de la aplicación Azure, eso significa sobrescribir los valores de Web.config con los valores de Azure.

Migraciones Azure o automáticas (programáticas)

Hay una segunda opción disponible si está ejecutando migraciones programáticamente, que le permite ejecutar migraciones usando una cadena de conexión que se obtiene de forma dinámica (o a través de la configuración de la aplicación de Azure) sin almacenarla en Web.config:

Al configurar la base de datos TargetDatabase , use el constructor DbConnectionInfo que toma una cadena de conexión y un nombre de proveedor en lugar del constructor que solo toma un nombre de conexión. Si la cadena de conexión no tiene un nombre de proveedor y está usando SQL Server / Azure SQL, use "System.Data.SqlClient"


  1. Agregar un archivo de App.Config
  2. Establecer el proyecto como proyecto de inicio.
  3. Asegúrese de agregar las cadenas de conexión después de la sección entityFramework :

    <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
    
    </configSections>
    
    <connectionStrings>
       <!-- your connection string goes here, after configSection -->
    </connectionString>
    

Agregue ConnectionString al archivo MVC Project Web.config


Agregue Connectoinstrnig en el archivo web.config

<ConnectionStiring> <add name="dbName" Connectionstring=" include provider name too"  ></ConnectionStiring>

Como usted supone, tiene que ver con que la cadena de conexión esté en app.config de la biblioteca de clases.

Copie la entrada de la clase app.config al archivo app.config o web.config del contenedor


Este problema ocurre cuando está utilizando capas en su proyecto y definió o instaló el trabajo de marco de entidad en DataLayer e intentó ejecutar su proyecto

Entonces, para superar este problema, copie la cadena de conexión de la capa donde está el archivo Edmx y pegue la cadena de conexión en web.config principal.


He tenido este problema cuando uso varios proyectos, el proyecto de inicio con web.config y app.config para el proyecto EntityFramework.

Para evitar este problema debes:

  1. Necesita la cadena de conexión en el archivo * .config iniciado.
  2. Necesita haber instalado la DLL EntityFramework en sus referencias

Intente copiar la cadena de conexiones al archivo .config en el proyecto MVC.


La mejor manera que encontré para abordar esto es establecer temporalmente ese proyecto (probablemente una biblioteca de clases) para el proyecto de inicio. Esto obliga a la consola del administrador de paquetes a usar ese proyecto como su fuente de configuración. parte de la razón por la que se configura de esta manera se debe al modelo descendente que usualmente siguen los archivos econfig. La regla de oro es que el proyecto más cercano al cliente (por ejemplo, la aplicación MVC) es web.config o app.config que se usará.


Puede pasar la cadena de conexión a EntityFramework y continuar con su vida:

public partial class UtilityContext : DbContext
{
    static UtilityContext()
    {
        Database.SetInitializer<UtilityContext>(null);
    }

    public UtilityContext()
        : base("Data Source=SERVER;Initial Catalog=DATABASE;Persist Security Info=True;User ID=USERNAME;Password=PASSWORD;MultipleActiveResultSets=True")
    {
    }

    // DbSet, OnModelCreating, etc...
}

Si, es tonto Puede evitar copiar la cadena de conexión utilizando un generador de conexiones. Código VB.Net (usado en producción, pero ligeramente modificado aquí, por lo tanto, trate como no probado, feliz de ayudar con cualquier problema), donde tengo una variable serverName, una variable databaseName, las paso a un método y hago que genere la conexión para mi:

    Dim EfBuilder As New System.Data.EntityClient.EntityConnectionStringBuilder("metadata=res://*/VMware.VmEf.csdl|res://*/VMware.VmEf.ssdl|res://*/VMware.VmEf.msl;provider=System.Data.SqlClient;provider connection string=""data source=none;initial catalog=none;integrated security=True;multipleactiveresultsets=True;App=EntityFramework""")
   Dim SqlBuilder As New Data.SqlClient.SqlConnectionStringBuilder(EfBuilder.ProviderConnectionString)
                        SqlBuilder.DataSource = serverName
                        SqlBuilder.InitialCatalog = databaseName
                        EfBuilder.ProviderConnectionString = SqlBuilder.ConnectionString
                        Using vmCtx As New VmEfConn(EfBuilder.ConnectionString)

También sucede si el proyecto de inicio se cambia a uno, que no tiene las cadenas de conexión .

  1. Haga clic derecho en la solución - haga clic en propiedades
  2. En Propiedades comunes, seleccione el proyecto de inicio
  3. En el panel derecho, seleccione el proyecto que tiene las cadenas de conexión (en la mayoría de los casos, serán proyectos MVC, el proyecto que inicia la solución)

Tuve este problema al ejecutar MSTest. No podría hacerlo funcionar sin la bandera "noisolation".

Esperemos que esto ayude a alguien. Me costó mucho tiempo darme cuenta de eso. Todo funcionó bien desde el IDE. Algo extraño sobre el Entity Framework en este contexto.


copie la cadena de conexión al archivo app.config o web.config en el proyecto que se configuró en "Establecer como proyecto de inicio" y, si utiliza el marco de entidad en la capa de datos, instale el nuget de marco de entidad en el proyecto principal.


asegúrese de realizar su proyecto (con DbContext) como inicio

O

Agregue al proyecto que se establece como inicio su cadena de conexión en la aplicación.config (o web.config)

O

Llama al comando así

Update-Database -Script -ProjectName '<project name>' -StartupProjectName '<project name>' -ConnectionString 'data source=.;initial catalog=<db name>;integrated security=True;MultipleActiveResultSets=True' -ConnectionProviderName 'System.Data.SqlClient'

Vuelva a intentarlo





asp.net-mvc-4