2010-01-28 3 views
7

Tout en utilisant Entity Framework je le diviser vers son propre projet:Entity Framework - Le fournisseur sous-jacent a échoué sur ConnectionString

  • RivWorks.Model - Contient entité Modèle
  • RivWorks.Controller - Utilise l'entité modèle et contient les règles biz
  • RivWorks.View.Web - Le site
  • de RivWorks.View.Services - projet WCF

Tout sur le site fonctionne correctement. Je suis en mesure d'appeler le contrôleur et de récupérer un modèle valide. Lorsque je tente la même chose de la Web.Service Je reçois cette erreur:

ERROR:
The underlying provider failed on ConnectionString.
STACK TRACE:
at System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString)
at System.Data.EntityClient.EntityConnection..ctor(String connectionString)
at System.Data.Objects.ObjectContext.CreateEntityConnection(String connectionString)
at System.Data.Objects.ObjectContext..ctor(String connectionString, String defaultContainerName)
at RivWorks.Model.Entities.RivFeedsEntities1..ctor(String connectionString)
at RivWorks.Model.FeedStoreReadOnly..ctor(String connectionString)
at RivWorks.Controller.ProductManager.LookupProduct(String productID, String sku, String urlRef, String env, String logPath)

Je suis un peu confus quant à pourquoi et à fouiller dans les journaux d'erreurs j'ai finalement compris les chaînes de connexion ne sont pas en cours de lecture le fichier de configuration du site Web. Donc, j'ai ajouté un code pour attraper et que, pour l'instant, codé en dur les valeurs comme:.

public dataObjects.NegotiateSetup LookupProduct(string productID, string sku, string urlRef, string env, string logPath) 
{ 
    string feedConnString = ""; 
    string rivConnString = ""; 

    log.InitializeLogFile(logPath); 
    dataObjects.NegotiateSetup resultSet = new dataObjects.NegotiateSetup(); 

    try { feedConnString = AppSettings.FeedAutosEntities_connString; } 
    catch { feedConnString = @"metadata=res://*/Entities.FeedEntities.csdl|res://*/Entities.FeedEntities.ssdl|res://*/Entities.FeedEntities.msl;provider=System.Data.SqlClient;provider connection string='Data Source=***.***.***.***;Initial Catalog=******;Persist Security Info=True;User ID=******;Password="******";MultipleActiveResultSets=True'"; } 

    try { rivConnString = AppSettings.RivWorkEntities_connString; } 
    catch { rivConnString = @"metadata=res://*/Entities.RivEntities.csdl|res://*/Entities.RivEntities.ssdl|res://*/Entities.RivEntities.msl;provider=System.Data.SqlClient;provider connection string='Data Source=******;Initial Catalog=******_Dev;Persist Security Info=True;User ID=******;Password="******";MultipleActiveResultSets=True'"; } 

    try 
    { 
     using (RivFeedsEntities1 _dbFeed = new FeedStoreReadOnly(feedConnString).ReadOnlyEntities()) 
     { 
      using (RivEntities _dbRiv = new RivWorksStore(rivConnString).NegotiationEntities()) 
      { 

Mais, hélas, il me donne toujours l'erreur ci-dessus! Des idées pourquoi?

+1

Trouvé un thread sur MSDN qui est resté sans réponse après plus d'un an. Triste, très, très triste. http://social.msdn.microsoft.com/Forums/en/adodotnetentityframework/thread/c5a7a766-9b02-4ae2-be60-a2605983701d?prof=required –

Répondre

4

Je sais que vous avez fait le tour avec vos chaînes de connexion pour les désinfecter mais je suppose que vous n'avez pas mis le " autour du mot de passe?

Sont-ils réellement requis?

+0

EntityFramework stocke ses chaînes de connexion quelque chose comme ça, même si les miennes ont '"' de 'provider connection string =' qui pourrait être l'endroit où Keith se trompe: 'metadata = res: //*/Models.DoodleEF.csdl | res: //*/Models.DoodleEF.ssdl | res: //*/Models.DoodleEF .msl; provider = System.Data.SqlClient; chaîne de connexion du fournisseur = " Source de données =. \ SqlExpress; Catalogue initial = zhpCoreContent; Sécurité intégrée = True; MultipleActiveResultSets = Vrai " "' –

+0

Ils sont copiés directement à partir de l'App.Config J'ai fait la même chose pour web.config - mais attendez - codé en dur ne comprend pas "

+1

Homme, je voudrais avoir un autre dev eloper ici qui peut regarder le code et voir les erreurs simples enfouies à l'intérieur d'une chaîne. Merci les gars! J'ai remplacé " par des guillemets de chaîne et le Context se construit maintenant. Arrêt à l'erreur suivante. –

Questions connexes