2017-05-10 4 views
0

Je travaille depuis quelques années avec Entity Framework sur SQL Server, mais cette erreur est nouvelle pour moi. J'ai créé un projet de bibliothèque (DLL) avec un modèle EDMX. Ensuite, je l'ai testé à partir d'une petite console et ça marche.Entity Framwork: erreur 0194: Plusieurs versions ont été rencontrées

Enfin, j'ai essayé de l'utiliser dans le vrai projet qui a besoin de cette DLL et ... il ne fonctionne évidemment pas !!

L'erreur que je reçois est:

System.Data.Entity.Core.MetadataException: Schema specified is not valid. Errors: error 0194: All artifacts loaded into an ItemCollection must have the same version. Multiple versions were encountered.

Le stackTrace complet est:

System.Data.Entity.Core.MetadataException: Schema specified is not valid. Errors: error 0194: All artifacts loaded into an ItemCollection must have the same version. Multiple versions were encountered. in System.Data.Entity.Core.Metadata.Edm.EdmItemCollection.LoadItems(IEnumerable 1 xmlReaders, IEnumerable 1 sourceFilePaths, SchemaDataModelOption dataModelOption, DbProviderManifest providerManifest, ItemCollection itemCollection, Boolean throwOnError) in System.Data.Entity.Core.Metadata.Edm.EdmItemCollection.Init(IEnumerable 1 xmlReaders, IEnumerable 1 filePaths, Boolean throwOnError) in System.Data.Entity.Core.Metadata.Edm.EdmItemCollection..ctor(IEnumerable 1 xmlReaders, IEnumerable 1 filePaths, Boolean skipInitialization) in System.Data.Entity.Core.Metadata.Edm.MetadataCache.LoadEdmItemCollection(MetadataArtifactLoader loader) in System.Data.Entity.Core.Metadata.Edm.MetadataCache.<>c__DisplayClass5.b__0(String k) in System.Collections.Concurrent.ConcurrentDictionary 2.GetOrAdd(TKey key, Func 2 valueFactory) in System.Data.Entity.Core.Metadata.Edm.MetadataCache.GetMetadataWorkspace(DbConnectionOptions effectiveConnectionOptions) in System.Data.Entity.Core.EntityClient.EntityConnection.GetMetadataWorkspace() in System.Data.Entity.Core.Objects.ObjectContext..ctor(EntityConnection connection, Boolean isConnectionConstructor, ObjectQueryExecutionPlanFactory objectQueryExecutionPlanFactory, Translator translator, ColumnMapFactory columnMapFactory) in System.Data.Entity.Internal.InternalConnection.CreateObjectContextFromConnectionModel() in System.Data.Entity.Internal.LazyInternalContext.InitializeContext() in System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) in System.Data.Entity.Internal.Linq.InternalSet 1.Initialize() in System.Data.Entity.Internal.Linq.InternalSet 1.get_InternalContext() in System.Data.Entity.Infrastructure.DbQuery 1.System.Linq.IQueryable.get_Provider() in System.Linq.Queryable.FirstOrDefault[TSource](IQueryable 1 source, Expression 1 predicate) in MailGunSender.MailManager.SendMail(String from, List 1 recipients, List 1 ccs, List 1 ccns, String subject, String text, String pathAttachment) in xxx:riga 261

Bien sûr, j'ai installé Entity Framework dans le projet de l'appelant (avec Nuget), comme je l'ai fait pour le projet de la console du testeur. Mais ici, il me donne cette erreur. Est-ce que tu sais pourquoi?

Ma chaîne de connexion est gérée par ce code:

public partial class Entities : DbContext 
{ 
    public Entities(string nameOrConnectionString) 
     : base(nameOrConnectionString) 
    { 

    } 

    public void Close() 
    { 
     this.Dispose(); 
    } 

    public static string GetConnectionString(string server, string db, string user, string pwd) 
    { 
     string cn = "Server=" + server; 
     cn += ";Database=" + db; 
     cn += ";uid=" + user; 
     cn += ";Pwd=" + pwd; 
     var providerSB = new SqlConnectionStringBuilder(cn); 
     var efConnection = new EntityConnectionStringBuilder(); 
     efConnection.Provider = "System.Data.SqlClient"; 
     efConnection.ProviderConnectionString = providerSB.ConnectionString; 
     efConnection.Metadata = @"res://*"; 
     return efConnection.ToString(); 
    } 
} 
+0

Quel est votre projet appelant? par exemple. ASP.NET MVC, WinForms? - Ouvrir le gestionnaire NuGet pour vérifier les versions des paquets Entity Framework que vous avez installés sur tous les projets sont les mêmes –

+0

Avez-vous plusieurs fichiers .edmx? Avez-vous essayé d'actualiser ou de recréer des fichiers plus anciens. – Scrobi

+0

@Scrobi Je n'ai qu'un seul fichier edmx, à l'intérieur de la dll –

Répondre

0

Je viens de tombé sur this article, ce gars-là avait un problème similaire et il a à voir avec noms uniques pour Entités mises.
Il fait également référence à deux autres articles.

Peut-être que cela fonctionnera dans votre cas.