J'essaye de reproduire un exemple trouvé sur MSDN. J'utilise ASP.NET et EF 4.1 (CTP?). J'ai utilisé NuGet pour installer le package EntityFramework.
J'obtiens cette erreur: The provider did not return a ProviderManifestToken string
... et la base de données n'est jamais créée.
Voici ma chaîne de connexion:
<add name="HospitalContext"
connectionString=
"data source=.\SQLExpress;initial catalog=NewTestDB;integrated security=True;"
providerName="System.Data.SqlClient"/>
Voici mon code:
var pat = new Patient { Name = "Shane123132524356436435234" };
db.Patients.Add(pat);
var labResult = new LabResult { Result = "bad", Patient = pat };
int recordAffected = db.SaveChanges();
Voici mon contexte:
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" });
}
}
Il s'agit d'un système SQL 2008 entièrement corrigé, avec VS 2010 SP1.
SqlServerCe.Entity.dll
Réponses:
J'obtenais cette erreur et j'ai essayé quelques-unes des suggestions précédentes. Ensuite, j'ai vérifié l'exception interne et j'ai remarqué que j'obtenais un simple échec de connexion SQL pour l'utilisateur. Juste autre chose à vérifier.
la source
Cela peut parfois se produire lorsque vous placez la chaîne de connexion dans le fichier app.config du mauvais projet dans Visual Studio.
Par exemple, j'ai eu ce problème dans le projet EF 4.1 (la version publiée) + le projet WCF Data Service et j'ai remarqué que je n'avais pas de chaîne de connexion spécifiée dans le projet Data Services, où il était utilisé.
la source
J'avais la même erreur, et en fait, la connexion a échoué pour le serveur spécifié. J'ai supprimé l'attribut "Sécurité intégrée" de la chaîne de connexion de configuration et cela a fonctionné.
la source
J'ai eu le même problème, et j'ajoute le code ci-dessous juste après l'instance de mon contexte (à charger par exemple)
la source
J'ai eu un problème similaire avec l'application MvcMusicStore. J'ai changé une ligne dans le Web.config de "Instance = true" à "Instance = false". Cela fonctionne parfois sans cette modification, mais je ne sais pas ce qui cause la différence. La lecture de ce http://msdn.microsoft.com/en-us/library/ms254504.aspx n'a pas vraiment aidé.
la source
Par une certaine raison d'autorisation, EF ne peut pas créer de connexion à la base de données. J'avais fait face au même problème en une seule journée. Enfin, j'avais essayé la solution suivante et cela a fonctionné: a / Ouvrez IIS (j'utilise IIS 7) b / Ouvrez les paramètres avancés de l'appool que le site Web utilisait (Ex: DefaultAppPool) c / Regardez le groupe de modèle de processus, changez la valeur d'identité vers "Système local"
J'espère que cela fonctionnera avec vous.
la source
J'avais juste le même problème ...
la solution qui a fonctionné pour moi était:
exécutez l'outil de configuration du réseau client (tapez cliconfg dans Run)
et assurez-vous que TCP / IP est activé.
la source
Je l'ai finalement craqué - après une légère chasse à l'oie sauvage pensant que c'était dû à des autorisations.
Révélation: UTILISER LE PROFILER SQL
(Remarque: j'ai récemment rétrogradé de EF6 à EF5)
En utilisant SQL Profiler, j'ai rapidement trouvé le dernier SQL exécuté avant l'échec signalé:
Eh bien, regardez ça - quelque chose à voir avec les migrations. Il cherche dans le
__MigrationHistory
tableau - que je n'avais même pas réalisé qu'il avait créé (j'avais déjà effacé les migrations dans mon CSPROJ) et effacé cela.Je tire donc les lignes de cette table et vois qu'elle est liée à une version de produit spécifique (v6).
En fait, j'ai rétrogradé d'EF6 (que je n'avais pas l'intention d'installer en premier lieu) à EF5 (qui est plus compatible avec l'échafaudage) et cela lorsque les problèmes ont commencé.
Je suppose que la
Model (<Binary data>)
colonne n'est pas rétrocompatible - d'où l'The provider did not return a ProviderManifest instance
erreur car elle n'a pas pu la décoder.Je n'avais rien à perdre et j'ai juste effacé complètement cette table et j'ai couru
Update-Database -Verbose
, puis j'étais de nouveau opérationnel.Si vous êtes dans un environnement avancé ou déjà en production, effacer cette table n'est peut-être pas la solution, mais cela m'a permis de me remettre immédiatement au travail.
la source
Add-Migration
etUpdate-Database -Verbose -Force
. voici une référence de commande coding.abel.nu/2012/03/ef-migrations-command-referenceEn utilisant Visual Studio 11 Beta avec EF4.1 et ASP.NET MVC, j'ai presque tiré mes cheveux jusqu'à ce que je trouve
Pour résoudre mon problème, je suis allé dans Application_Start et j'ai changé
à
la source
Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");
a été ajouté à maMain
méthode, maintenant cela fonctionne comme un charme! Merci beaucoup.Cette citation de CodePlex , cela a fonctionné avec moi (Visual Studio 2013 / MVC 5)
la source
Une autre chose à considérer si vous utilisez EF Code First est qu'il ne crée parfois pas automatiquement la base de données de sauvegarde dans votre classe DbContext. La solution consiste à ajouter votre propre chaîne de connexion - vous pouvez utiliser la chaîne de connexion qui peut être présente pour gérer la base de données utilisateur / enregistrement qui soutient le fournisseur d'appartenance simple, en tant que modèle. Enfin, vous devrez ajouter un constructeur par défaut pour la classe DbContext que vous avez créée:
Ici, le nom de la chaîne de connexion que vous avez entré dans votre fichier web.config est utilisé pour diriger le DbContext pour créer la base de données. Très rarement, j'ai dû créer manuellement la base de données (dans SQL Server Management Studio), ce qui l'a incitée à fonctionner.
la source
J'ai plusieurs projets dans une solution et j'ai ajouté EF à chaque projet à des moments différents. Sur certaines machines, cela fonctionnait et sur d'autres, il a échoué avec l'erreur susmentionnée. Il m'a fallu un certain temps pour remarquer que certains app.config de mon projet avaient ceci:
C'est correct si vous utilisez LocalDb (nouveau "sql express" comme), mais complètement faux si vous n'avez pas ce serveur spécifique installé et utilisez un SQL standard.
Solution: supprimez le code ci-dessus.
la source
Cela est dû au fait que la connexion au serveur SQL a échoué.
Assurez-vous que le compte d'utilisateur sous lequel vous exécutez le processus a accès à SQL Server.
Si vous avez généré le DbContext à partir du thread parent (comme l'utilisation de l'injection de dépendances), puis si vous empruntez l'identité d'un autre utilisateur, cette erreur se produit. La solution serait de générer le DbContext à l'intérieur du nouveau thread ou du nouveau contexte d'emprunt d'identité.
la source
Je viens de fermer toutes les instances de Visual Studio et de rouvrir ma solution.
Je ne sais pas ce qui s'est réellement passé, mais j'ai eu la même solution ouverte à partir de deux espaces de travail locaux différents (l'un avec mes modifications locales, l'autre avec le code source du référentiel inchangé). Je travaille avec une base de données postgres, Entity Framework 6, Visual Studio 2013 et ASP.NET MVC 5.
la source
J'ai eu une erreur pour le cadre d'entité, mais aucune des réponses ci-dessus n'a fini par s'intégrer dans la solution qui a finalement fonctionné.
Mes premiers modèles de code EntityFramework et DataContext étaient dans un projet distinct de mon projet principal WebAPI. Mon projet Entity Framework quelque part sur la ligne de codage a été défini comme projet de démarrage et par conséquent, lorsque j'exécutais une migration, j'obtenais «Le fournisseur n'a pas renvoyé de chaîne ProviderManifestToken» ... problème de connexion.
Il s'avère que puisque la ConnectionString à la base de données se trouve dans le fichier Web.config du projet WebAPI Main, que lorsque j'exécutais une migration, la chaîne de connexion n'était pas récupérée. En définissant le projet WebAPI comme mon startProject, j'ai pu me connecter avec succès.
la source