Estoy intentando replicar un ejemplo encontrado en MSDN. Estoy usando ASP.NET y EF 4.1 (¿CTP?). He usado NuGet para instalar el paquete EntityFramework.
Recibo este error: The provider did not return a ProviderManifestToken string
... y la base de datos nunca se crea.
Aquí está mi cadena de conexión:
<add name="HospitalContext"
connectionString=
"data source=.\SQLExpress;initial catalog=NewTestDB;integrated security=True;"
providerName="System.Data.SqlClient"/>
Aquí está mi código:
var pat = new Patient { Name = "Shane123132524356436435234" };
db.Patients.Add(pat);
var labResult = new LabResult { Result = "bad", Patient = pat };
int recordAffected = db.SaveChanges();
Aquí está mi contexto:
public class HospitalContext : DbContext
{
static HospitalContext()
{
Database.SetInitializer(new HostpitalContextInitializer());
}
public DbSet<Patient> Patients { get; set; }
public DbSet<LabResult> LabResults { get; set; }
}
public class HostpitalContextInitializer :
DropCreateDatabaseIfModelChanges<HospitalContext>
{
protected override void Seed(HospitalContext context)
{
context.Patients.Add(new Patient { Name = "Fred Peters" });
context.Patients.Add(new Patient { Name = "John Smith" });
context.Patients.Add(new Patient { Name = "Karen Fredricks" });
}
}
Este es un sistema SQL 2008 completamente parcheado, con VS 2010 SP1.
SqlServerCe.Entity.dll
Respuestas:
Recibí este error y probé algunas de las sugerencias anteriores. Luego verifiqué la Excepción interna y noté que estaba obteniendo un error de inicio de sesión de SQL simple para el usuario. Solo algo más para comprobar.
fuente
Esto puede suceder a veces cuando coloca la cadena de conexión dentro de la aplicación.config del proyecto incorrecto en Visual Studio.
Por ejemplo, tuve este problema en el proyecto EF 4.1 (la versión publicada) + proyecto WCF Data Service y noté que no tenía una cadena de conexión especificada en el Proyecto de servicios de datos, donde se estaba utilizando.
fuente
Estaba teniendo el mismo error, y en realidad fue un error de inicio de sesión para el servidor especificado. Eliminé el atributo "Seguridad integrada" de la cadena de conexión de configuración y funcionó.
fuente
Tuve el mismo problema y agregué el siguiente código justo después de la instancia de mi contexto (carga por ejemplo)
fuente
Tuve un problema similar con la aplicación MvcMusicStore. Cambié una línea en Web.config de "Instance = true" a "Instance = false". A veces funciona sin este ajuste, pero no sé qué causa la diferencia. Leer esto http://msdn.microsoft.com/en-us/library/ms254504.aspx realmente no ayudó.
fuente
Por alguna razón determinada de permiso, EF no puede crear una conexión de base de datos. Había enfrentado el mismo problema todo el día. Finalmente probé la siguiente solución y funcionó: a / Abrir IIS (estoy usando IIS 7) b / Abrir configuración avanzada de appool qué sitio web estaba usando (por ejemplo, DefaultAppPool) c / Ver grupo de modelo de proceso, cambiar el valor de identidad a "Localsystem"
Espero que funcione contigo.
fuente
Solo estaba teniendo el mismo problema ...
la solución que funcionó para mí fue:
ejecutar la herramienta de configuración de red del cliente (escriba cliconfg en Ejecutar)
y asegúrese de que TCP / IP esté habilitado ...
fuente
Finalmente lo rompí, después de una ligera persecución salvaje pensando que se debía a los permisos.
Revelación: USE SQL PROFILER
(Nota: Recientemente bajé de EF6 a EF5)
Usando SQL Profiler encontré rápidamente el último SQL ejecutado antes de la falla informada:
SELECT TOP (1) [Project1].[C1] AS [C1], [Project1].[MigrationId] AS [MigrationId], [Project1].[Model] AS [Model] FROM ( SELECT [Extent1].[MigrationId] AS [MigrationId], [Extent1].[Model] AS [Model], 1 AS [C1] FROM [dbo].[__MigrationHistory] AS [Extent1] ) AS [Project1] ORDER BY [Project1].[MigrationId] DESC
Bueno, mira eso, algo que ver con las migraciones. Está mirando en la
__MigrationHistory
tabla, que ni siquiera me había dado cuenta de que había creado (ya había borrado las migraciones en mi CSPROJ) y lo borré.Así que levanto las filas de esa tabla y veo que está vinculada a una versión de producto específica (v6).
De hecho, bajé de EF6 (que no tenía la intención de instalar en primer lugar) a EF5 (que es más compatible con los andamios) y fue entonces cuando comenzaron los problemas.
Supongo que la
Model (<Binary data>)
columna no es compatible con versiones anteriores, de ahí elThe provider did not return a ProviderManifest instance
error, ya que no pudo decodificarla.No tenía nada que perder y simplemente borré esta mesa por completo y corrí
Update-Database -Verbose
y luego volví a estar en funcionamiento.Si se encuentra en un entorno avanzado o ya está en producción, borrar esta tabla puede no ser la solución, pero de esta manera me permitió volver al trabajo.
fuente
Add-Migration
yUpdate-Database -Verbose -Force
. aquí hay una referencia de comando coding.abel.nu/2012/03/ef-migrations-command-referenceAl usar Visual Studio 11 Beta con EF4.1 y ASP.NET MVC, casi me arranco el pelo hasta que encontré
Para solucionar mi problema, entré en Application_Start y cambié
a
fuente
Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");
se agregó a miMain
método, ¡ahora funciona como un encanto! Muchas gracias.Esta cita de CodePlex , funcionó conmigo (visual studio 2013 / MVC 5)
fuente
Otra cosa a considerar si está utilizando EF Code First es que a veces no crea automáticamente la base de datos de respaldo para su clase DbContext. La solución es agregar su propia cadena de conexión; puede usar la cadena de conexión que puede estar presente para manejar la base de datos de usuario / registro que respalda el Proveedor de membresía simple, como plantilla. Finalmente, deberá agregar un constructor predeterminado para la clase DbContext que creó:
Aquí, el nombre de la cadena de conexión que ingresó en su archivo web.config se usa para dirigir el DbContext para crear la base de datos. Muy ocasionalmente, tuve que crear manualmente la base de datos (en SQL Server Management Studio) lo que hizo que funcionara.
fuente
Tengo varios proyectos en una solución y agregué EF a cada proyecto en diferentes momentos. En algunas máquinas estaba funcionando y en algunas falló con el error mencionado anteriormente. Me tomó un tiempo darme cuenta de que algunos de los archivos app.config de mi proyecto tenían esto:
Esto está bien si usa LocalDb (nuevo como "sql express"), pero completamente incorrecto si no tiene ese servidor específico instalado y usa un SQL normal.
Solución: elimine el código anterior.
fuente
Esto se debe a que falló la conexión al servidor SQL.
Asegúrese de que la cuenta de usuario con la que está ejecutando el proceso tenga acceso a SQL Server.
Si ha generado el DbContext desde el hilo principal (como usar la inyección de dependencia) y luego si está personificando a otro usuario, se produciría este error. La solución sería generar el DbContext dentro del nuevo hilo o nuevo contexto de suplantación.
fuente
Acabo de cerrar todas las instancias de Visual Studio y reabrí mi solución.
No sé qué sucedió realmente, pero abrí la misma solución desde dos espacios de trabajo locales diferentes (uno con mis cambios locales, otro con el código fuente del repositorio sin cambios). Trabajo con una base de datos postgres, Entity Framework 6, Visual Studio 2013 y ASP.NET MVC 5.
fuente
Tuve un error para el marco de la entidad, pero ninguna de las respuestas anteriores terminó encajando en la solución que finalmente funcionó.
Mis modelos de EntityFramework Code First y DataContext estaban en un proyecto separado de mi proyecto principal de WebAPI. Mi proyecto Entity Framework en algún lugar de la línea de codificación se estableció como el proyecto de inicio y, por lo tanto, cuando estaba ejecutando una migración, recibía "El proveedor no devolvió una cadena ProviderManifestToken" ... problema de conexión.
Resulta que, dado que ConnectionString a la base de datos se encuentra en el archivo Web.config en el proyecto principal de WebAPI, cuando estaba ejecutando una migración, la cadena de conexión no se estaba recuperando. Al configurar el proyecto WebAPI como mi startProject, pude conectarme correctamente.
fuente