2009-09-08 4 views
2

J'utilise Entity Framework pour accéder à ma base de données MySQL. Le modèle a été généré en utilisant EDMGEN2 et tout fonctionne très bien. Je peux faire tout mon bien de requête linq-to-entity ...MySql et Entity framework donne aléatoirement Le schéma spécifié n'est pas une erreur valide

... jusqu'à ce qu'une quantité indéterminée de temps passe et j'obtiens "Le ProviderManifestToken '5' est différent de '5.1' qui a été rencontré plus tôt" erreur . Pourquoi rencontre-t-il un '5' pour commencer quand j'ai seulement spécifié '5.1'? Le seul moyen d'arrêter l'erreur est de reuploader au fichier edmx (qui n'a pas du tout changé), en écrasant le précédent. À ce stade, l'application va heureusement fournir des données aux utilisateurs jusqu'à ce que l'erreur survienne peut-être quelques heures plus tard, parfois quelques jours plus tard et je vais devoir recommencer à courir après ma queue.

J'ai essayé de changer le ProviderManifestToken = "5.1" en "MySQL", "6", "5" et la même situation se produira: fonctionne pendant un moment puis l'erreur. En prime, je n'ai que ce fichier ONE edmx dans l'application webbase de vb.net, alors qu'est-ce que ça peut dérouter?

les premières lignes de mon fichier edmx ressemble:

<edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx"> 
<edmx:Runtime> 
<edmx:StorageModels> 
<Schema Namespace="v2Model.Store" Alias="Self" Provider="MySql.Data.MySqlClient" ProviderManifestToken="5.1" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2006/04/edm/ssdl"> 
    <EntityContainer Name="v2ModelStoreContainer">..... 

et ma chaîne de connexion à web.config ressemble:

<add name="v2Entities" connectionString="metadata=res://*;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;database=v2;uid=username;pwd=password&quot;" providerName="System.Data.EntityClient" /> 

Cela est en cours depuis le dernier mois maintenant et je ne peux pas comprendre la source du problème pour la vie de moi! Toutes les suggestions du tout seront appréciés

installation est la suivante:

Windows Server 2003 MySQL v 5.1.38 (également essayé 5.1.36) connecteur/NET 6.1.1.0 (essayé aussi 6.0.4.0)

L'erreur est la suivante:

schéma spécifié est incorrect. Erreurs: MySql.Data.Entity.Properties.SchemaDefinition-5.1.ssdl (4,9): erreur 0169: tous les artefacts SSDL doivent cibler le même fournisseur. Le ProviderManifestToken '5' est différent de '5.1' rencontré plus tôt.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (4,9): erreur 0169: Tous les artefacts SSDL doivent cibler le même fournisseur. Le ProviderManifestToken '5' est différent de '5.1' rencontré plus tôt.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (7,4): erreur 0019: Le nom EntityContainer doit être unique. Un EntityContainer avec le nom 'Schema' est déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (336,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.Table' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (348,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.TableColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (374,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.View' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (386,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ViewColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (412,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.Function' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (437,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.Procedure' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (447,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.Parameter' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (471,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.Constraint' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (483,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.CheckConstraint' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (491,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ConstraintColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (500,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ForeignKeyConstraint' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (509,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ForeignKey' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (520,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ViewConstraint' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (535,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.TableTableConstraint' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (548,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ConstraintConstraintColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (561,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ConstraintForeignKey' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (574,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.FromForeignKeyColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (587,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ToForeignKeyColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (600,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.TableTableColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (613,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ViewViewColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (626,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.FunctionFunctionParameter' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (639,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ProcedureProcedureParameter' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (652,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ViewViewConstraint' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (665,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ViewConstraintConstraintColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (678,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ViewConstraintForeignKey' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (691,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.FromForeignKeyViewColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl (704,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ToForeignKeyViewColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (4,9): erreur 0169: Tous les artefacts SSDL doivent cibler le même fournisseur. Le ProviderManifestToken '5' est différent de '5.1' rencontré plus tôt.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (7,4): erreur 0019: Le nom EntityContainer doit être unique. Un EntityContainer avec le nom 'Schema' est déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (391,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.Table' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (403,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.TableColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (429,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.View' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (441,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ViewColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (467,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.Function' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (492,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.Procedure' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (502,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Saisissez le nom 'MySqlClient.Le paramètre 'était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (526,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.Constraint' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (538,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.CheckConstraint' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (546,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ConstraintColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (555,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ForeignKeyConstraint' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (564,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ForeignKey' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (575,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ViewConstraint' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (590,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.TableTableConstraint' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (603,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ConstraintConstraintColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (616,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ConstraintForeignKey' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (629,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.FromForeignKeyColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (642,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ToForeignKeyColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (655,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.TableTableColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (668,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ViewViewColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (681,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.FunctionFunctionParameter' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (694,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ProcedureProcedureParameter' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (707,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ViewViewConstraint' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (720,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ViewConstraintConstraintColumn' était déjà défini. MySQL.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (733,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ViewConstraintForeignKey' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (746,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.FromForeignKeyViewColumn' était déjà défini.

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl (759,4): erreur 0019: Chaque nom de type dans un schéma doit être unique. Le nom de type 'MySqlClient.ToForeignKeyViewColumn' était déjà défini.

Répondre

3

Je ne suis toujours pas sûr de la cause exacte, mais ce qui suit semble fixer le plantage aléatoire:

Modification du

metadata=res://*; 

l'espace de noms réel du fichier EDMX semble fonctionner:

metadata=res://MyApplication.Entities; 

la chaîne de connexion de fixation problème se présente comme suit maintenant:

<add name="v2Entities" connectionString="metadata=res://MyApplication.Entities;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;database=v2;uid=username;pwd=password&quot;" providerName="System.Data.EntityClient"/> 
+1

J'ai des problèmes similaires. Pouvez-vous dire à quoi se rapporte MyApplication.Entities? –

+0

Je suppose que "MyApplication" est l'espace de noms du modèle (fichier .edmx). "Entités" est le nom de la classe. – Dasun

1

La modification de la chaîne de connexion pour inclure l'espace de noms projet/EDMX a fonctionné pour moi. Mais sans les ".Entities".

Dans mon cas, j'avais une solution avec plusieurs projets, chacun avec un fichier EDMX faisant référence à une base de données MySQL différente. Individuellement bien, mais lorsqu'ils sont exécutés ensemble lors de tests ont reçu les erreurs mentionnées ci-dessus.

1

OK les gens J'ai eu ce problème soudainement avec MySql Connector 6.2.2 après des mois d'utilisation de l'infrastructure framework avec lui sans aucun problème.

J'ai retracé mes étapes, j'ai fait 2 choses, je ne sais pas ce qui l'a gâché mais c'était l'une d'elles, alors je vais vous dire ce que j'ai fait en Web.config pour le réparer. Je jouais avec la trousse d'outils Ajax et une autre boîte à outils de cartographie dans l'application sur laquelle je travaillais.

  1. Tout en jouant autour dans mon application, j'ai essayé de DataBind un tableau à un EntityDataSource en utilisant le nouvel assistant créer Datasource du point de vue de la conception.

  2. J'ai également effectué des connexions de données en utilisant des connexions ado.net de base avec l'espace de noms MySQL.Data. Mon application consistait en des jeux de données typés solides et un framework d'entité.

Il peut avoir ajouté une référence supplémentaire au connecteur MySql/net apis pour ce faire. J'ai Windows 7 et il a sauvegardé mon application il y a 4 jours donc je l'ai restauré et comparé les 2 fichiers de configuration web.La différence est l'application qui me donne cette erreur avait ces références de montage supplémentaires à la fin de la section Assemblées:

<add assembly="MySql.Data.Entity, Version=6.2.2.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D" /> 
    <add assembly="MySql.Web, Version=6.2.2.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D" /> 

J'ai enlevé ceux-ci, tout ce que vous besoin de MySql est:

<add assembly="MySql.Data, Version=6.2.2.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D" /> 

J'espère que cela va résoudre le problème de quelqu'un!

0

Pour certaines personnes, effacez votre dossier bin et réessayez. Pour moi, je recevais cette erreur lors du déploiement sur un site serveur 2003. J'avais renommé un projet, et l'ancien assembly (.dll) était là. Puisque la chaîne de connexion a commencé avec "res: // *; ...", elle a recherché TOUS les assemblages (même ceux non-chargés) pour la ressource et a trouvé des doubles (évidemment).

Questions connexes