我在我的項目中使用實體框架代碼第一次遷移。其中一種遷移通過讀取位於項目目錄中的csv
文件中的數據來填充數據庫表。項目結構如下所示:從EF遷移腳本中查找目錄路徑的最佳方法是什麼?
- Soulution
- Project
- Migrations
- CSVFolder
- file1.csv
- file2.csv
- Migration1.cs
- Migration2.cs
在我Up()
方法,我得到這樣的文件,以便:
public override void Up()
{
var migrationsDir = AppDomain.CurrentDomain.BaseDirectory + "/Migrations/CSVFolder/"; // For some reason, Path.Combine() doesn't work for me here so I manually concatenate the strings.
var templateFiles = Directory.GetFiles(migrationsDir, "*.csv");
foreach (var filename in templateFiles)
{
Sql(); // SQL Insert statement here.
}
}
這運行正常我的開發機器上,但是當我部署此與測試服務器八達通,我得到未發現異常
找不到路徑 的一部分的路徑「C:\八達通\應用程序\測試\解決方案\ 1.1 alpha21 \遷移\ CSVFolder」。
我檢查了'drop'文件夾,其中的輸出包括Migrations > CSVFolder
。
我試過幾種不同的方法來獲取文件夾的路徑,但他們在本地或在服務器上工作。獲得可在本地和服務器上工作的路徑的最佳方式是什麼?
「你必須檢查你有多少目錄,直到你到達所需的位置」 - 這正是問題陳述。 我並不是真的想將它們作爲資源嵌入到老實說中,但似乎這是我必須確保在兩種情況下都能正確使用的最佳方式。現在,我使用'Directory.GetDirectories(AppDomain.CurrentDomain.BaseDirectory,「CSVFolder」)[0]'解決了這個問題。這可以工作,但確實假設不會有多個名爲'CSVFolder'的目錄。 –