2010-01-28 10 views
7

Podczas korzystania z Entity Framework Mam podzielić go na jego własnym projekcie:Entity Framework - Podstawowym dostawcą zawiodły na ConnectionString

  • RivWorks.Model - zawiera Entity model
  • RivWorks.Controller - Używa podmiotu modelu i zawiera zasady Biz
  • RivWorks.View.Web - witryna sieci web
  • RivWorks.View.Services - projekt WCF

Wszystko na stronie działa poprawnie. Mogę zadzwonić do kontrolera i odzyskać prawidłowy model. Gdy próbuję samo z Web.Service ja dostaję ten błąd:

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)

jestem trochę zdezorientowany, dlaczego i kopanie przez dzienniki błędów w końcu zorientowali się ciągi połączeń nie zostały odczytane z plik konfiguracyjny witryny sieci Web. Tak, dodałem trochę kodu do połowu i że na razie trudno kodowane w wartości takich jak:.

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()) 
      { 

Ale, niestety, jest ona wciąż daje mi powyższy błąd! Jakieś pomysły, dlaczego?

+1

Znaleziono wątek na MSDN, który pozostaje bez odpowiedzi po ponad roku. Smutne, bardzo, bardzo smutne. http://social.msdn.microsoft.com/Forums/en/adodotnetentityframework/thread/c5a7a766-9b02-4ae2-be60-a2605983701d?prof=required –

Odpowiedz

4

Wiem, że zmarnowałeś swoje ciągi połączeń, aby je oczyścić, ale domyślam się, że nie wstawiłeś " wokół hasła?

Czy są one rzeczywiście wymagane?

+0

EntityFramework przechowuje w swoim łańcuchu połączenia coś takiego, chociaż moje mają '"' od 'provider connection string =', co może być przyczyną niepowodzenia Keitha: 'metadata = res: //*/Models.DoodleEF.csdl | res: //*/Models.DoodleEF.ssdl | res: //*/Models.DoodleEF .msl; provider = System.Data.SqlClient; łańcuch połączenia dostawcy = " Źródło danych =. \ SqlExpress; Początkowy katalog = zhpCoreContent; Zintegrowane bezpieczeństwo = True; MultipleActiveResultSets = True " "' –

+0

Są one kopiowane bezpośrednio z App.Config Zrobiłem to samo dla web.config - ale czekaj - trudne kodowanie nie rozumie ". . Oddam to rano. –

+1

Człowieku, chciałbym mieć innego dewelopera eloper, który może spojrzeć na kod i zobaczyć proste błędy ukryte wewnątrz napisu. Dzięki chłopaki! Zastąpiłem " cytatami ze strunami, a teraz buduję Kontekst. Wyłącz do następnego błędu. –