[英]SQL Express connection string: mdf file location relative to application location
[英]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="data source=(localdb)\v11.0;AttachDbFilename=|DataDirectory|\KasaMP.mdf;initial catalog=KasaMP;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
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.