使用LocalDb和DbContext更正应用程序的app.config连接字符串?

时间:2012-11-17 14:51:04

标签: connection-string app-config dbcontext localdb

我有一个使用LocalDb和DbContext的Windows窗体应用程序。这在我的开发盒上工作正常,但是当部署到另一个盒子时我无法使它工作。

在我的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. 如果这是“System.Data.LocalDb”,那么providerName设置为“System.Data.EntityClient”?

    1. 是否有人能够发布或指导我为LocalDb和DbContext提供正确的app.config示例?

1 个答案:

答案 0 :(得分:1)

调试运行应用时AppDomain.CurrentDomain.GetData("DataDirectory")相等的内容?如果为null,则可以使用

进行设置
AppDomain.CurrentDomain.SetData(
  "DataDirectory", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ""));

我刚刚遇到了这个问题,使用了我的AttachDBFilename = | DataDirectory | database.mdf,我认为它不需要额外的\因为Path.Combine。

另外我注意到运行SQLlocalDB信息时v11.0属性自动创建,是,不确定在指定命名实例时是否有所不同。