開發機運行正常,複製到教師電腦報錯:找不到 LocalDB 實例名。連接字串:
"Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\Database.mdf;Integrated Security=True;Connect Timeout=30"
(LocalDB)\\MSSQLLocalDB 是**自動實例**名,需 LocalDB 服務運行且實例已創建。|DataDirectory| 默認指向 ContentRootPath/App_Data,需確保 .mdf 文件隨部署複製到該目錄。sqllocaldb create MSSQLLocalDBsqllocaldb start MSSQLLocalDBAttachDbFilename 指向絕對路徑或正確相對路徑。"Data Source=|DataDirectory|\\Database.db;Cache=Shared"
Microsoft.Data.Sqlite / Microsoft.EntityFrameworkCore.Sqlite。Data Source=.;Initial Catalog=MyDb;Integrated Security=True。| 參數 | 含義 | 注意 |
|---|---|---|
| Data Source | 實例名稱 | (LocalDB)\\MSSQLLocalDB 為自動實例 |
| AttachDbFilename | .mdf 文件路徑 | 必須包含 .mdf 擴展名,|DataDirectory| 需正確解析 |
| Integrated Security | Windows 驗證 | 需當前用戶有數據庫權限 |
| Connect Timeout | 連接超時秒數 | LocalDB 首次啟動較慢,建議 30+ 秒 |
// 程式碼中輸出實際解析路徑
var connStr = Configuration.GetConnectionString("Default");
var builder = new SqlConnectionStringBuilder(connStr);
var mdfPath = builder.AttachDbFilename;
var resolved = mdfPath.Replace("|DataDirectory|",
AppDomain.CurrentDomain.GetData("DataDirectory").ToString());
Console.WriteLine("實際 MDF 路徑: " + resolved);
教學作業交付,**強烈建議改用 SQLite**,消除環境依賴,教師雙擊即可運行。若必須用 LocalDB,請附帶 安裝指引文檔 與 啟動實例腳本。