2012-11-17 29 views
1

我有一個使用LocalDb和DbContext的Windows窗體應用程序。這在我的開發框中工作正常,但是在部署到另一個框時我無法使其正常工作。更正使用LocalDb和DbContext的應用程序的app.config連接字符串?

在我的app.config,我與實例命名LocalDB實例:

<system.data.localdb> 
    <localdbinstances> 
     <add name="LocalProvergience" version="11.0" /> 
    </localdbinstances> 
    </system.data.localdb> 

我的連接字符串是:

<add name="LocalProvergienceEntities" 
     connectionString="metadata=res://*/ProvergienceModel.csdl| 
            res://*/ProvergienceModel.ssdl| 
            res://*/ProvergienceModel.msl; 
            provider=System.Data.SqlClient; 
            provider connection string=&quot;data source=(localdb)\LocalProvergience; 
            initial catalog=LocalProvergience;integrated security=True; 
            multipleactiveresultsets=True; 
            App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" /> 

如果我包括:

AttachDbFilename=|DataDirectory|\LocalProvergience.mdf; 

在連接字符串中,我得到了「針對attachdbfilename的Invald鍵值」錯誤。

如果我排除了AttachDbFilename,我得到「與SQL服務器建立連接時出現網絡相關或實例特定的錯誤」錯誤。

幾個問題:

  1. 的的ProviderName設置爲 「System.Data.EntityClient」 這應該是 「System.Data.LocalDb」?

    1. 任何人都可以發佈或指導我的一個正確的app.config的LocalDb和DbContext的例子?
+0

作爲一個實驗 - 我在目標機器上創建了一個名爲LocalProvergience的服務器實例,並通過sqllocaldb命令行啓動實例。 SqlLocalDb我報告 LocalProvergience v11.0 當我運行該應用程序,我得到完全相同的錯誤。 –

+0

有沒有辦法以編程方式獲取DbContext正在使用的連接字符串? –

+0

我已嘗試使用SQLLocalDb info MyInstance命令獲取的命名管道的共享實例的連接字符串以及連接字符串。我在目標機器上使用.Net 4.5。與LocalDb的所有連接均失敗,並且「與SQL Server建立連接時發生網絡相關或實例特定的錯誤」。唯一的變化是命名管道連接,提供者說(提供者:命名管道提供者,錯誤40 ... –

回答

1

在調試運行應用程序時有哪些呢AppDomain.CurrentDomain.GetData("DataDirectory")平等的嗎?如果爲null,你可以與

AppDomain.CurrentDomain.SetData(
    "DataDirectory", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "")); 

設置,我只是碰到了這一點,但用我的AttachDBFilename = | DataDirectory目錄| database.mdf,我覺得它並不需要,因爲Path.Combine的額外的\。

另外我注意到當運行SQLlocalDB信息時,自動創建v11.0屬性是,不知道在指定命名實例時是否有所不同。

相關問題