web-dev-qa-db-fra.com

Code First ne peut pas activer les migrations

J'essaie d'activer les migrations, mais une exception est lancée:

Vérification si le contexte cible une base de données existante ... System.TypeInitializationException: l'initialiseur de type de 'System.Data.Entity.Migrations.DbMigrationsConfiguration`1' a généré une exception. ---> System.TypeInitializationException: l'initialiseur de type pour 'System.Data.Entity.Internal.AppConfig' a ​​levé une exception. ---> System.Configuration.ConfigurationErrorsException: le système de configuration n'a pas pu s'initialiser ---> System.Configuration.ConfigurationErrorsException: l'attribut 'name' doit être spécifié sur la balise 'section'.

Je suppose que le fichier App.config n'est pas configuré correctement (il a été configuré automatiquement lorsque j'ai ajouté le package EF). Tout ce que j'ai fait a été d'ajouter la chaîne de connexion:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>

  <section Name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
 <!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 --></configSections>

 <connectionStrings>
   <add Name="MyContext" connectionString="data source=MYSERVER;initial catalog=CodeFirstTest;user id=***;password=***;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
 </connectionStrings>

 <entityFramework>
   <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
     <parameters>
       <parameter value="v11.0" />
     </parameters>
   </defaultConnectionFactory>
   <providers>
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
   </providers>
 </entityFramework>
</configuration>

J'utilise SQL Server 2008 R2.

Comme j'ai une chaîne de connexion, je ne pense pas avoir besoin de defaultconnectionfactory. Ai-je raison? (Remarque: même sans cette section, je reçois toujours la même exception.)

Que manque-t-il d'autre?

15
Ivan-Mark Debono

J'ai eu le même problème lorsque mon entrée <connectionString /> est sur la partie supérieure de la Web.config, juste après <configuration>. Ensuite, j'ai essayé de le déplacer juste avant </configuration>, et cela a fonctionné.

49
Lester S

Cela concerne principalement le fichier de configuration. Ainsi, la trace de pile qui aide est "System.Configuration.ConfigurationErrorsException" . Il peut y avoir plusieurs raisons, mais elles incluent toutes principalement la correction dans le fichier de configuration comme indiqué précédemment .. ceux-ci sont donnés ci-dessous (mais la pile nous le dit vraiment)

  1. Une des raisons possibles peut être que votre projet où les migrations sont activées peut être différent du projet de démarrage. Veillez donc à ajouter -StartUpProject à votre commande de nuget.
  2. La version du framework d'entité utilisé peut être différente dans le cas de deux projets différents. 
7
skillworks

J'ai rencontré le même problème. Mon problème est qu'il y a double chaîne de connexion sur le fichier Web.config. comme ci-dessous: 

<add name="DB1234" ..../> <add name="DB1234" ..../> Nous devons donc d'abord vérifier notre fichier web.config! Bonne chance!

2
nisiumi

Dans mon cas, en utilisant le modèle généré par DevExpress MVC, il doit ajouter des lignes supplémentaires après <sectionGroup name="devExpress">...<sectionGroup/> dans web.config

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
1
iRviNe48

vérifiez l'orthographe de votre 'chaîne_connexion' et assurez-vous qu'il s'agit de 'chaîne_connexion' J'ai omis le 's' auparavant dans mon propre cas . Après avoir ajouté le 's', cela l'a résolu.

1
engr_mikolo

Dans mon cas, j'avais plusieurs projets dans la solution et un autre projet a été défini comme projet StartUp. La définition du projet pour lequel j'essayais d'activer les migrations était résolue par le projet StartUp.

1
Owen Pauling

Comme @Lester answer check web config. Cela doit ressembler à ceci:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    ...
  </configSections>
  <appSettings>
   ...
  </appSettings>
  ...
<configuration>
0
Ali Karaca

dans mon expérience, par exemple, toutes les informations utilisées pour établir une connexion avec la base de données sont celles qui proviennent du fichier de configuration qui se trouve dans le projet de démarrage et non celui qui se trouve dans le projet où je me trouve. générer ou utiliser les instructions enable-migrations ou update-database, par exemple, j'ai le projet PRINCIPAL et un autre projet DATA, j'utilise le projet DATA en tant que projet par défaut uniquement lors de l'exécution des packages dans Packager Console Manager, mais le fichier de configuration réellement utilisé est celui de PRINCIPAL.

0
Abdiel

Inclure ceci dans <configSections>

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

Dans mon cas, cette ligne est omise lorsque 2 instances de Visual Studio sont ouvertes . Fermez toutes les instances de Visual Studio, ouvrez et réinstallez EF via l'interface Nuget ou la console pour éviter cette erreur

0
Davi Menezes

Vérifiez la configuration Web, par exemple: J'ai les paramètres de l'application comme ceci: 

   <configuration> 
    <appSettings>
          <add key="dhx_license" value="value"/>
    </appSetting>
.....

et jeté cette erreur. Mais ensuite, j'ai réalisé que appSetting était dupliqué ci-dessous et j'ai donc déplacé le et l'erreur a disparu. Merci.

0
ferralucho