1

我有一个使用 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 的键值无效”错误。

如果我排除 AttachDbFilename,我会收到“与 SQL 服务器建立连接时发生与网络相关或特定于实例的错误”错误。

几个问题:

  1. providerName 设置为“System.Data.EntityClient”应该是“System.Data.LocalDb”吗?

    1. 任何人都可以发布或指导我到 LocalDb 和 DbContext 的正确 app.config 的示例吗?
4

1 回答 1

1

调试AppDomain.CurrentDomain.GetData("DataDirectory")时运行应用程序时等于什么?如果为空,您可以使用

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

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

我还注意到在运行 SQLlocalDB 信息时 v11.0 属性 Auto-Create 是 Yes,不确定在指定命名实例时是否会有所不同。

于 2013-12-10T22:10:47.577 回答