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