Pregunta

Tengo una aplicación asp.net-mvc con la base de datos de membresía predeterminada. Estoy accediendo a él por Entidad Framework de ADO.NET.

Ahora quiero moverlo a IIS, pero se presentaron varios problemas. Tuve que instalar SQL Server Management Studio, crear una nueva base de datos, importar allí todos los datos del archivo .MDF anterior. Lo único que queda por hacer (por lo que sé) es cambiar a la cadena de conexión. Sin embargo, no tengo mucha experiencia con esto y continúo obteniendo la palabra clave no admitida: 'fuente de datos'. excepción. Aquí está mi cadena de conexión:

<add name="ASPNETDBEntities" 
     connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
     providerName="System.Data.EntityClient" />

¿Alguna idea, qué está mal?

¿Fue útil?

Solución

Lo que tienes es una cadena de conexión ADO.NET válida, pero NO es una cadena de conexión válida de Entity Framework

La cadena de conexión EF se vería así:

<connectionStrings> 
  <add name="NorthwindEntities" connectionString=
     "metadata=.\Northwind.csdl|.\Northwind.ssdl|.\Northwind.msl;
      provider=System.Data.SqlClient;
      provider connection string=&quot;Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False&quot;" 
      providerName="System.Data.EntityClient" /> 
</connectionStrings>

Te faltan todos los elementos metadata = y providerName = en tu cadena de conexión EF ... básicamente, solo tienes lo que está contenido en el cadena de conexión del proveedor parte.

El uso del diseñador EDMX debe crear una cadena de conexión EF válida para usted, en su web.config o app.config.

Marc

ACTUALIZACIÓN: está bien, entiendo lo que intentas hacer: necesitas un segundo " ADO.NET " cadena de conexión solo para la base de datos de miembros / miembros de ASP.NET. Su cadena es correcta, pero el nombre de proveedor es incorrecto, tendría que ser " System.Data.SqlClient " - esta conexión no utiliza ENtity Framework - no especifique el " EntityClient " para eso entonces!

<add name="ASPNETMembership" 
     connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
     providerName="System.Data.SqlClient" />

Si especifica providerName = System.Data.EntityClient == > Cadena de conexión Entity Framework (con los metadatos = y todo).

Si necesita y especifica providerName = System.Data.SqlClient == > ADO.NET directo cadena de conexión de SQL Server sin todas las adiciones de EF

Otros consejos

Este problema puede ocurrir cuando hace referencia a sus cadenas de conexión web.config (o app.config) por índice ...

var con = ConfigurationManager.ConnectionStrings[0].ConnectionString;

La cadena de conexión basada en cero no siempre es la que está en su archivo de configuración, ya que hereda a otros por defecto de más arriba en la pila .

Los métodos recomendados son acceder a su conexión por nombre ...

var con = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;

o para borrar el elemento connnectionStrings en su archivo de configuración primero ...

<connectionStrings>
    <clear/>
    <add name="MyConnection" connectionString="...

Estaba teniendo el mismo problema.
pero este código funciona bien, inténtalo.

<add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />

Tuve este problema cuando comencé a usar Entity Framework, sucedió cuando no cambié la conexión del antiguo servidor SQL a la conexión EntityFrameWork.

Solución: en el archivo donde se realiza la conexión a través del archivo web.config " agregar nombre = " Entidades " connectionString = XYZ " ;, Asegúrate de que te refieres a la conexión correcta, en mi caso tuve que hacer esto

        public static string MyEntityFrameworkConnection
    {
        get
        {
             return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
        }

    }

llame a MyEntityFrameworkConnection siempre que sea necesario establecer la conexión.

private string strConnection= Library.DataAccessLayer.DBfile.AdoSomething.MyEntityFrameworkConnection;

nota: la conexión en el archivo web.config se generará automáticamente al agregar el modelo Entity a la solución.

Sé que esta es una publicación antigua, pero recientemente recibí el mismo error, así que valga la pena, aquí hay otra solución:

Por lo general, se trata de un error en la cadena de conexión. Verifique el formato de su cadena de conexión. Puede buscar la 'cadena de conexión del marco de la entidad' o seguir las sugerencias anteriores.

Sin embargo, en mi caso, mi cadena de conexión estaba bien y el error fue causado por algo completamente diferente, así que espero que esto ayude a alguien:

  1. Primero tuve un error EDMX : había una nueva tabla de base de datos en el EDMX y la tabla no existía en mi base de datos (lo curioso es el error, el error no era muy obvio porque no se mostraba en mi EDMX o en la ventana de salida, en su lugar, estaba oculto en Visual Studio en la ventana 'Lista de errores' debajo de 'Advertencias'). Resolví este error agregando la tabla faltante a mi base de datos. Pero, en realidad estaba ocupado intentando agregar un procedimiento almacenado y aún obtengo el error 'fuente de datos', así que vea a continuación cómo lo resolví:

  2. Error de procedimiento almacenado : estaba intentando agregar un procedimiento almacenado y cada vez que lo agregué a través de la ventana de diseño de EDMX recibí un error de "fuente de datos". La solución fue agregar el procedimiento almacenado en blanco (conservé el nombre y la declaración del proceso almacenado, pero eliminé el contenido del proceso almacenado y lo reemplazé con 'seleccionar 1' y volví a intentar agregarlo al EDMX). ¡Funcionó! Presumiblemente a EF no le gustó algo dentro de mi proceso almacenado. Una vez que agregué el proc a EF, pude actualizar el contenido del proc en mi base de datos a lo que quería que fuera y funciona, se resolvió el error 'fuente de datos'.

rareza

Recibí el mismo error y luego actualicé la cadena de conexión como se muestra a continuación,

<add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

Intenta esto, resolverá tu problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top