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?
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 –