具有DataDirectory的ConnectionString(C#,SQLServer)

时间:2019-04-11 11:15:49

标签: c# sql-server xml wpf

我使用EntityFramework和wpf在c#中创建了一个应用程序。 当我创建安装程序时,它可以在我的计算机上正常工作,但是当我在另一台计算机上安装它时,会出现此错误

  

发生文件激活错误。物理文件名\Data\myDb.mdf可能不正确。诊断并纠正其他错误,然后重试该操作。 CREATE DATABASE失败。列出的某些文件名无法创建。检查相关错误。

这是我的App.config

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      </configSections>
      <connectionStrings>

        <add name="myConnectionString" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;
             AttachDbFileName='|DataDirectory|\Data\myDb.mdf';
             Initial Catalog=myDb.mdf; Integrated Security=True" providerName="System.Data.SqlClient" />

      </connectionStrings>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
      </startup>
      <entityFramework>
        <defaultConnectionFactory type="EntityFramework">
          <parameters>
            <parameter value="mssqllocaldb" />
          </parameters>
        </defaultConnectionFactory>
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
        </providers>
      </entityFramework>
    </configuration>

1 个答案:

答案 0 :(得分:1)

您可以尝试在运行时设置|DataDirectory|的值:

AppDomain.CurrentDomain.SetData("DataDirectory", @"C:\Program Files (x86)\Company\AppFolder\")

或在配置文件中用绝对路径替换|DataDirectory|