首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

LINQ to SQL 實體對映建立:Attribute vs XML Mapping 與 SqlMetal 實戰參數

     編輯:關於.NET

所有 LINQ to SQL 操作入口為 DataContext,需提供資料庫連線與對映資訊。對映來源為 MappingSource,.NET 3.5 提供兩種實作:

  • AttributeMappingSource:類別屬性標註([Table]、[Column]、[Association])
  • XmlMappingSource:外部 XML 檔案定義對映關係

建立 DataContext 範例

static DataContext CreateContext() {
    var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "northwnd.xml");
    var connStr = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "northwnd.mdf");
    var mapping = XmlMappingSource.FromXml(File.ReadAllText(path));
    return new DataContext(connStr, mapping);
}

或使用強型別 NorthwndDataContext(由工具產生),直接存取 context.Customers 屬性。

工具產生實體與對映:O/R Designer vs SqlMetal

強烈建議使用工具自動產生,手寫易遺漏關聯維護代碼(如 EntitySet 委托註冊),影響級聯操作。

  • O/R Designer:Visual Studio 視覺化設計介面,適合簡單專案
  • SqlMetal.exe:命令列工具,支援批次、自動化建置,功能更完整

SqlMetal 常用參數組合

# 1. 本地 MDF 檔案
sqlmetal "northwnd.mdf" /code:northwnd.cs /map:northwnd.xml /namespace:LinqAttach /context:Northwnd /pluralize

# 2. 連線字串
sqlmetal /conn:"server=myserver;database=northwind" /code:northwnd.cs /map:northwnd.xml /namespace:LinqAttach /context:Northwnd /pluralize

# 3. 伺服器/資料庫/密碼
sqlmetal /server:myserver /database:northwnd /password:pwd /code:northwnd.cs /map:northwnd.xml /namespace:LinqAttach /context:Northwnd /pluralize

參數說明:

  • /code:產生實體類別與 DataContext 衍生類別的 .cs 檔
  • /map:產生 XML 對映檔
  • /namespace:指定命名空間
  • /context:DataContext 衍生類別名稱
  • /pluralize:依英文單複數規則命名實體與屬性(如 Customer → Customers)

Attribute vs XML Mapping 選擇建議

常見迷思:「大專案用 XML、小專案用 Attribute」純屬誤導。XML 優勢在於資料庫異動時無需重新編譯,僅替換 XML 檔即可;其餘多為團隊習慣差異。本系列採用 XML 方式示範。

必要條件:實體必須定義 Primary Key

SQL Server 允許無主鍵資料表,但 LINQ to SQL 實體類別至少需一個 IsPrimaryKey=true 的 Column,作為身分識別快取與物件生命週期管理的唯一鍵值。

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