【问题标题】:ConnectionString with DataDirectory (c#, sqlserver)带有数据目录的连接字符串(c#、sql server)
【发布时间】:2019-09-02 00:19:29
【问题描述】:

我使用 EntityFramework 在 c# 中使用 wpf 创建了一个应用程序。 当我创建设置时,它在我的计算机上运行良好,但是当我将它安装在另一台计算机上时,我收到此错误

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

这是我的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>

【问题讨论】:

  • 评论不用于扩展讨论;这个对话是moved to chat
  • @2kFerd:myDb.mdf 文件位于失败的计算机上的什么位置?
  • @mm8 这是安装后的完整路径C:\Program Files (x86)\Company\AppFolder\Data\myDb.mdf

标签: c# sql-server xml wpf


【解决方案1】:

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

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

或者将|DataDirectory|替换为配置文件中的绝对路径。

【讨论】:

  • 当我将|DataDirectory| 替换为绝对路径时,我收到此错误无法创建文件C:\Program Files (x86)\Company\AppFolder\Data\myDb.mdf ,因为它已经存在。更改文件路径或文件名,然后重试操作。但是当我改变时,我得到一个 NullPointerException
  • “改变”?如果删除文件怎么办?您在代码中哪里得到这个异常?
  • 当我尝试访问数据库时得到它
  • 删除所有缓存和 SQL Server LocalDB 文件夹中的旧 MSSQLLocalDB 后,它工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-03
相关资源
最近更新 更多