2010-01-28 59 views
7

实体框架 - 基础提供失败的当使用实体框架我已经把它分解出它自己的ConnectionString项目

  • RivWorks.Model - 包含实体模型
  • RivWorks.Controller - 使用实体模型并包含BIZ规则
  • RivWorks.View.Web - 该网站
  • RivWorks.View.Services - WCF项目

网站中的所有内容都正常工作。我可以调用Controller并获取有效的Model。当我尝试从Web.Service同样的事情,我收到此错误:

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)

我有点困惑,为什么,并通过错误日志,我终于想通了,没有被读取连接字符串挖网站的配置文件。所以,我添加了一些代码,以赶上和,就目前而言,在硬编码一样的价值观:

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

但是,唉,它仍然给我上面的错误!任何想法为什么?

+1

发现MSDN上的线程是经过了一年多没有得到答复。伤心,非常非常伤心。 http://social.msdn.microsoft.com/Forums/en/adodotnetentityframework/thread/c5a7a766-9b02-4ae2-be60-a2605983701d?prof=required – 2010-01-29 00:05:18

回答

4

我知道你一直在用你的连接字符串来清理它们,但我猜你没有把"的密码在?

难道他们实际需要?

+0

的EntityFramework存储其连接字符串类似的东西,虽然我的有''"从'provider connection string ='这可能是Keith出错的地方:'metadata = res://*/Models.DoodleEF.csdl | res://*/Models.DoodleEF.ssdl | res://*/Models.DoodleEF .msl; provider = System.Data.SqlClient; provider connection string = " Data Source =。\ SqlExpress; Initial Catalog = zhpCoreContent; Integrated Security = True; MultipleActiveResultSets = True "“' – 2010-01-29 00:11:36

+0

它们直接从App.Config我也做了同样的事情的web.config - 但等待 - 。硬编码不明白" 将给出在早晨拍摄 – 2010-01-29 02:26:27

+1

男人,我希望我有其他开发人员。在这里可以看到代码并看到隐藏在字符串中的简单错误。多谢你们!我用字符串引号替换了",现在构建了上下文。关闭到下一个错误。 – 2010-01-29 16:25:10