Comment résoudre Avertissement: L'élément 'entityFramework' a des 'fournisseurs' d'éléments enfants invalides. Liste des éléments attendus: "contextes"
Je suis en train de jouer autour avec EF différents flux de travail. Hier, j'ai fait un nouveau projet et Entity Framework 6
a été la première suggestion de Nuget
j'ai donc décidé de lui donner un essai, il est aussi un très petit projet entièrement à des fins d'apprentissage, donc je suppose que ce sera une bonne expérience pour essayer EF 6
depuis, j'ai travaillé principalement avec Ef 5
.
Mon Application est basée sur Code First
approche. La structure de la solution est indiquée dans l'écran d'impression:
Le projet CodeFirstClasses
est destiné à contenir mes Entités. À des fins de simplicité et parce que j'ai suivi un tutoriel, je vais utiliser une seule classe comme vous pouvez le voir - Customer.cs
. Là, j'ai :
public class RewardContext : DbContext
{
//Specify the name of the base as Rewards
public RewardContext() : base("Rewards")
{
}
//Create a database set for each data item
public DbSet<Purchase> Purchases { get; set; }
public DbSet<Customer> Customers { get; set; }
}
Et les autres classes - Purchase
et Customer
qui sont triviales, donc je ne vais pas les coller ici.
L'autre projet comme vous pouvez le voir, c'est Windows Forms
projet avec juste un formulaire et un bouton. Sur le click
cas de bouton j'ai de la logique pour l'ajout de nouveaux enregistrements à mes deux entités codé en dur. Voici une partie de celui-ci:
//some code...
//Add the record and save it
context.Customers.Add(newCustomer);
context.Purchases.Add(newPurchase);
context.SaveChanges();
MessageBox.Show("Record Added!");
Pour l'instant rien de différent de ce que je suis habitué avec EF 5
. Je peux construire le projet, je peux le faire tourner, et tout est exécuté comme prévu. Mais j'ai cet avertissement dans le titre :
Warning 1 The element 'entityFramework' has invalid child element 'providers'. List of possible elements expected: 'contexts'.
Et même si je suis en utilisant principalement MS SQL Server Management Studio
j'ai remarqué que je ne suis pas capable de gérer mes connexions/bases de données à partir de l'IDE - Visual Studio 2012
mais ce n'était pas un problème avec EF 5
.
Mes recherches rétréci vers le bas de la source possible du problème ou de la solution de modifier manuellement les App.config
fichier, mais c'est un domaine où je n'ai pas beaucoup d'expérience, surtout lorsque l'IDE a pris soin d'elle jusqu'à ce que EF 6
. Donc je vais poster mes deux App.config
fichiers pour cette solution :
L'un de l' CodeFirstClasses
projet :
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
Et de mon TestCodeFirst
projet:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
Et l'autre solution que j'ai trouvé est : updating the xsd for "validating" EF config section in web/app.config file to recognize newly added EF6 elements
qui je ne suis pas conscient de exactement comment le faire.
Même si, quand j'ouvre le MS SQL Server Management Studio
je vois la base de données créée pour cette application, les enregistrements sont sauvegardés et généralement, il semble que le travail, mais pourtant, je voudrais résoudre cet avertissement et d'obtenir pour savoir comment configurer mon applications basées sur EF 6
droit.
source d'informationauteur Leron
Vous devez vous connecter pour publier un commentaire.
Vous pouvez installer le EF6 Designer pour VS2012 de ici et il va mettre à jour le schéma qui valide les fichiers de configuration.
Le schéma de configuration a été modifié à partir de la version 5 à 6. Comme il le dit, les fournisseurs de nœud a été remplacé par un nœud contexts.
L'idée est que vous pouvez configurer les fournisseurs individuellement au lieu de tous les contextes en utilisant le même fournisseur. (Cela va de pair avec la possibilité d'avoir de multiples contextes qui se trouvent dans une base de données. Cette habitude d'être appelé multi-locataire, mais fut plus tard renommé pour être plus concis)