2010-01-28 29 views
7

Trong khi sử dụng khung Entity Tôi đã chia nó ra cho dự án riêng của nó:Entity Framework - Các nhà cung cấp tiềm ẩn không thành công trên ConnectionString

  • RivWorks.Model - Có Entity Mẫu
  • RivWorks.Controller - Sử dụng Entity model và chứa các quy tắc biz
  • RivWorks.View.Web - trang web
  • RivWorks.View.Services - dự án WCF

Mọi thứ trong trang web đều hoạt động tốt. Tôi có thể gọi vào Controller và lấy lại Model hợp lệ. Khi tôi cố gắng điều tương tự từ Web.Service Tôi nhận được lỗi này:

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)

Tôi là một chút bối rối là tại sao và đào bới trong các bản ghi lỗi cuối cùng tôi đã tìm ra những chuỗi kết nối đã không được đọc từ tệp cấu hình của Trang Web. Vì vậy, tôi đã thêm một số mã để nắm bắt điều đó và, hiện tại, đã mã hóa cứng các giá trị đó. Giống như:

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

Nhưng, than ôi, nó vẫn cho tôi lỗi trên! Bất kỳ ý tưởng tại sao?

+1

Tìm thấy một chủ đề trên MSDN chưa được trả lời sau hơn một năm. Buồn, rất, rất buồn. http://social.msdn.microsoft.com/Forums/en/adodotnetentityframework/thread/c5a7a766-9b02-4ae2-be60-a2605983701d?prof=required –

Trả lời

4

Tôi biết bạn đã được mucking xung quanh với chuỗi kết nối của bạn để vệ sinh chúng nhưng tôi đoán bạn đã không đặt mật khẩu của " xung quanh?

Họ có thực sự cần thiết không?

+0

EntityFramework lưu trữ chuỗi kết nối của nó giống như vậy, mặc dù tôi có '" 'từ 'provider connection string =' có thể là nơi mà Keith đã sai: 'metadata = res: //*/Models.DoodleEF.csdl | res: //*/Models.DoodleEF.ssdl | res: //*/Models.DoodleEF .msl; provider = System.Data.SqlClient; chuỗi kết nối nhà cung cấp = " Nguồn dữ liệu =. \ SqlExpress; Danh mục ban đầu = zhpCoreContent; Bảo mật tích hợp = True; MultipleActiveResultSets = True " "' –

+0

Chúng được sao chép thẳng ra khỏi App.Config Tôi đã làm điều tương tự cho web.config - nhưng chờ đợi - cứng mã hóa không hiểu " .Đó sẽ cung cấp cho một shot vào buổi sáng –

+1

Man, tôi muốn tôi đã có một dev eloper ở đây có thể xem mã và xem những sai lầm đơn giản được chôn bên trong một chuỗi. Cảm ơn các bạn! Tôi đã thay thế " bằng các trích dẫn chuỗi và Ngữ cảnh hiện được tạo. Tắt đến lỗi tiếp theo. –

Các vấn đề liên quan