【问题标题】:How to correctly move location of .mdf file and change Connection String's DataDirectory accordingly如何正确移动 .mdf 文件的位置并相应地更改连接字符串数据目录
【发布时间】:2017-07-01 04:30:08
【问题描述】:

目前我的 SQL 数据库正在运行

C:\Users\Slaven\KasaMP.mdf

我想将它移动到我的项目目录[可能是“数据库”文件夹(?)],并对我的连接字符串进行正确的更改。 我的目标是能够在任何计算机上打开这个带有 .mdf 文件的项目。我使用的当前 ConnectionString 是 EntityFramework 生成的,我不确定使这个 CS 指向不同位置的方法是什么。

连接字符串:

<connectionStrings>
    <add name="KasaMPEntities" connectionString="metadata=res://*/OsnovniPodaci.Model.csdl|res://*/OsnovniPodaci.Model.ssdl|res://*/OsnovniPodaci.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(localdb)\v11.0;AttachDbFilename=|DataDirectory|\KasaMP.mdf;initial catalog=KasaMP;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;"
      providerName="System.Data.EntityClient" />
  </connectionStrings>

我的项目路径:

C:\Users\Slaven\Documents\visual studio 2013\Projects\PCKasa\KasaMP

我在其他帖子中发现了以下这一行,但我不确定它的作用:

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

我知道我必须将此属性放在 ConnectionString 中的某个位置

AttachDbFileName=|DataDirectory|\KasaMP.mdf

关于如何正确执行此操作的任何建议? ^^

【问题讨论】:

    标签: c# sql-server winforms entity-framework connection-string


    【解决方案1】:

    在 WinForms 应用程序中,DataDirectory 替换字符串指向应用程序启动的文件夹。在 Visual Studio 会话的情况下,此文件夹是 BIN\DEBUG 或 BIN\RELEASE 文件夹(可能带有 x86 变体)

    这在 Visual Studio 中运行良好,但您应该注意,在您的客户 PC 中并且无需更改配置设置,您应该拥有 MDF 的文件夹与您的应用程序相同。
    但是,遗憾的是这个位置没有写权限(如 C:\program 文件)。任何数据库应用程序的基本要求。

    所以最好的办法是将此文件放在您可以使用Environment.SpecialFolder.CommonApplicationData 枚举检索的 CommonApplicationData 文件夹中 (在最新版本的 Windows 中通常为 C:\PROGRAMDATA)

    string folder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
    string myAppFolder = Path.Combine(folder, "MyReservedAppDataFolder");
    Directory.CreateDirectory(myAppFolder);
    AppDomain.CurrentDomain.SetData("DataDirectory", myAppFolder);
    

    所有这些都应该在您的应用程序中的任何与数据访问相关的代码之前完成。 当然,您可以保留现在的设置而不做任何更改。

    【讨论】:

    • 感谢您的建议,但我不知道如何从我的 SQL Server xD 更改 .mdf 的位置
    • 我试过这个:blog.sqlauthority.com/2012/10/28/… 但我遇到了一堆错误
    • 我不明白。您的配置文件使用 LocalDb 实例。您是在告诉我您的客户使用的是已安装的 Sql Server 或 Sql Server Express 实例吗?在这种情况下,连接字符串完全不同,您需要将 MDF 文件添加到已安装的 Sql Server 实例中
    • 目前我正在尝试将 MDF 文件放在我的项目中... LocalDB 实例当然可以,但它在我的用户内部,当其他人在他们的 Visual Studio 上打开我的项目时,这将不起作用 - 我'我还没有成为客户的一部分
    • 是的,我确实有 Sql Server Menagement Studio 和 SqlServer Express,但我只是连接到 LocalDB...谢谢指点,我会弄清楚的
    猜你喜欢
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多