首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server Compact 3.5 + CodeSmith 實戰:嵌入式資料庫遷移與 NHibernate 整合坑點

     編輯:關於SqlServer

從 SQLite → SQL CE 3.5:為了 CodeSmith 產生關聯映射

SQLite 不支援外鍵 → CodeSmith 無法讀取關聯 → 無法產生多對多映射 → 手寫 HBM/Entity 痛苦。SQL CE 3.5 桌面版支援完整索引/關係/約束,**免安裝、單檔 (.sdf)、完美嵌入**,成最佳替代。

遷移路徑

  1. Access → **Upsizing Wizard** → SQL Server Express (建立關係)。
  2. SQL Server → **SQL to SQL CE 工具** → SQL CE .sdf (關係部分需手工補齊)。
  3. CodeSmith 5.0 需自行編譯 Schema Provider (舊版只支援 4.0)。

CodeSmith + NHibernate 整合關鍵坑點

坑點現象解決
NHibernate 查詢失敗但 SSMS 可跑`SELECT ... FROM dbo.Book` 拋異常,InnerException 無明確訊息ADO.NET 直連測試 → 發現 **表名帶 `dbo.` 前綴** 導致 CE 不識別
CodeSmith 產生 HBM 含 `dbo.```修改 CodeSmith 模板:`table.FullName` → `table.Name` 移除 Schema 前綴
CE 不支援 Stored ProcedureORM 層面影響小,改用參數化 SQL/LINQ接受無 SP 限制,專注表/關係/索引

連接字串與部署


  

  • 發布時僅需複製 `.sdf` + `System.Data.SqlServerCe.dll` (x86/x64 兩版) 到輸出目錄。
  • 開發期用 SQL Server Express 做 CodeSmith 資料源,運行期換 CE,**Schema 同步靠 CodeSmith 重新產生**。

結語

SQL CE 3.5 + CodeSmith + NHibernate **輕量嵌入式資料庫開發鐵三角**。關鍵在 **移除 Schema 前綴**、**接受無 SP**、**建立自動化 Schema 同步流程**。適合單機/Client-Side/偶爾同步的輕量應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved