Tengo una aplicación asp.net-mvc con la base de datos de membresía predeterminada. Estoy accediendo a él mediante ADO.NET Entity Framework.
Ahora quiero moverlo a IIS, pero aparecieron 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 (hasta donde yo sé) es cambiar a la cadena de conexión. Sin embargo, no tengo mucha experiencia con esto y sigo recibiendo 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é pasa?
Respuestas:
Lo que tiene es una cadena de conexión ADO.NET válida, pero NO es una cadena de conexión de Entity Framework válida.
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="Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False"" providerName="System.Data.EntityClient" /> </connectionStrings>
Te faltan todos los elementos
metadata=
yproviderName=
en tu cadena de conexión EF ... básicamente solo tienes lo que contiene laprovider connection string
parte.El uso del diseñador EDMX debería crear una cadena de conexión EF válida para usted, en su web.config o app.config.
Bagazo
ACTUALIZACIÓN: OK, entiendo lo que está tratando de hacer: necesita una segunda cadena de conexión "ADO.NET" solo para la base de datos de usuarios / miembros de ASP.NET. Su cadena está bien, pero el nombre del proveedor es incorrecto - tendría que ser "System.Data.SqlClient" - esta conexión no usa ENtity Framework - ¡no especifique el "EntityClient" 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 de Entity Framework (con los metadatos = y todo).Si necesita y especifica
providerName=System.Data.SqlClient
==> cadena de conexión directa de ADO.NET SQL Server sin todas las adiciones de EFfuente
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 de base cero no siempre es la que está en su archivo de configuración, ya que hereda otras de forma predeterminada de más arriba en la pila .
Los enfoques recomendados son acceder a su conexión por su 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="...
fuente
Yo estaba teniendo el mismo problema.
pero este código funciona bien, pruébalo.
<add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
fuente
Tuve este problema cuando comencé a usar Entity Framework, sucedió cuando no cambié la conexión del servidor SQL anterior 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úrese de que se está refiriendo 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 una 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 de entidad a la solución.
fuente
Sé que esta es una publicación antigua, pero recibí el mismo error recientemente, así que por lo que vale, aquí hay otra solución:
Esto suele ser un error de cadena de conexión, verifique el formato de su cadena de conexión, puede buscar 'cadena de conexión del marco de 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:
Primero tuve un error de 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 gracioso es el error, el error no fue muy obvio porque no se mostró en mi EDMX o ventana de salida, en cambio estaba escondido en Visual Studio en la ventana 'Lista de errores' debajo de 'Advertencias'). Resolví este error agregando la tabla que faltaba a mi base de datos. Pero, en realidad estaba ocupado tratando de agregar un procedimiento almacenado y todavía recibía el error de 'fuente de datos', así que vea a continuación cómo lo resolví:
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 como en blanco (conservé el nombre y la declaración del proceso almacenado, pero eliminé el contenido del proceso almacenado y lo reemplacé 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 proceso a EF, pude actualizar el contenido del proceso en mi base de datos a lo que quería que fuera y funciona, se resolvió el error de 'fuente de datos'.
rareza
fuente
Recibí el mismo error, luego actualicé mi 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" />
Pruebe esto, resolverá su problema.
fuente