簡體   English   中英

如何正確移動.mdf文件的位置並相應地更改連接字符串的DataDirectory

[英]How to correctly move location of .mdf file and change Connection String's DataDirectory accordingly

目前我的SQL數據庫已啟用

C:\Users\Slaven\KasaMP.mdf

我想將其移動到我的項目目錄[也許是“ database”文件夾(?)]中,並在我的連接字符串上進行正確的更改。 我的目標是能夠在任何計算機上打開帶有.mdf文件的項目 我當前使用的ConnectionString是EntityFramework生成的,並且我不確定使該CS指向不同位置的方法是什么。

的ConnectionString:

<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

關於如何正確執行此操作的任何建議? ^^

在WinForms應用程序中,DataDirectory替換字符串指向應用程序啟動所在的文件夾。 如果是Visual Studio會話,則此文件夾為BIN \\ DEBUG或BIN \\ RELEASE文件夾(可能帶有x86變體)

這在Visual Studio中很好用,但是您應該意識到,在客戶PC上且無需更改配置設置,MDF所在的文件夾與應用程序相同。
但是,可悲的是,該位置沒有寫權限(例如C:\\ program文件)。 任何數據庫應用程序的基本要求。

因此,最好的選擇是將此文件放在CommonApplicationData文件夾中,該文件夾可以使用Environment.SpecialFolder.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);

所有這些都應在應用程序中任何與數據訪問相關的代碼之前完成。 當然,您可以保持設置不變,而無需進行任何更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM