LINQ to SQL 會套用屬性或使用外部對應檔,將 SQL Server 資料庫對應至 LINQ to SQL 物件模型。 本主題概述屬性型方法。
在最基本的形式中,LINQ to SQL 會將資料庫對應至DataContext,資料表對應至類別,而將這些類別上的屬性對應至欄位和關聯性。 您也可以使用屬性來對應物件模型中的繼承階層。 如需詳細資訊,請參閱 如何:在 Visual Basic 或 C# 中產生物件模型。
使用 Visual Studio 的開發人員通常會使用物件關係型設計工具來執行屬性型對應。 您也可以使用 SQLMetal 命令行工具,也可以自行編寫屬性的程式代碼。 如需詳細資訊,請參閱 如何:在 Visual Basic 或 C# 中產生物件模型。
備註
您也可以使用外部的 XML 檔案進行對應。 如需詳細資訊,請參閱 外部對應。
下列各節將更詳細地描述屬性為基礎的映射。 如需詳細資訊,請參閱 System.Data.Linq.Mapping 命名空間。
DatabaseAttribute 屬性
當連接未提供名稱時,請使用這個屬性來指定資料庫的預設名稱。 此屬性是選擇性屬性,但如果您使用此屬性,則必須套用 Name 屬性,如下表所述。
| 房產 | 類型 | 預設 | 說明 |
|---|---|---|---|
| Name | 繩子 | 請參閱 Name | 搭配其 Name 屬性使用,指定資料庫的名稱。 |
如需詳細資訊,請參閱DatabaseAttribute。
TableAttribute 屬性
使用這個屬性,將類別指定為與資料庫數據表或檢視相關聯的實體類別。 LINQ to SQL 會將具有此屬性的類別視為持續性類別。 下表描述 Name 屬性。
| 房產 | 類型 | 預設 | 說明 |
|---|---|---|---|
| Name | 繩子 | 與類別名稱相同的字串 | 將類別指定為與資料庫數據表相關聯的實體類別。 |
如需詳細資訊,請參閱TableAttribute。
ColumnAttribute 屬性
使用這個屬性來指定實體類別的成員,以代表資料庫數據表中的數據行。 您可以將此屬性套用至任何欄位或屬性。
只有在 LINQ to SQL 儲存資料庫變更時,才會擷取和保存您識別為數據行的成員。 沒有此屬性的成員會被視為非持久性,不會進行插入或更新。
下表描述此屬性的屬性。
| 房產 | 類型 | 預設 | 說明 |
|---|---|---|---|
| AutoSync | 自動同步 (AutoSync) | 從不 | 指示 Common Language Runtime (CLR) 在插入或更新作業之後擷取值。 選項:Always、Never、OnUpdate、OnInsert。 |
| CanBeNull | 布爾邏輯 | true |
表示數據行可以包含 Null 值。 |
| DbType | 繩子 | 推斷的資料庫數據行類型 | 使用資料庫類型和修飾詞來指定資料庫數據行的類型。 |
| Expression | 繩子 | 空 | 定義資料庫中的計算數據列。 |
| IsDbGenerated | 布爾邏輯 | false |
表示數據列包含資料庫自動產生的值。 |
| IsDiscriminator | 布爾邏輯 | false |
表示數據行包含 LINQ to SQL 繼承階層的歧視性值。 |
| IsPrimaryKey | 布爾邏輯 | false |
指定此類別成員代表一個作為或屬於該數據表主鍵的欄位。 |
| IsVersion | 布爾邏輯 | false |
將成員的數據行類型識別為資料庫時間戳或版本號碼。 |
| UpdateCheck | UpdateCheck | 除非AlwaysIsVersion是成員,否則true。 |
指定 LINQ to SQL 如何處理樂觀並行衝突的偵測。 |
如需詳細資訊,請參閱ColumnAttribute。
備註
AssociationAttribute 和 ColumnAttribute 的 Storage 屬性值具區分大小寫的特性。 例如,請確保在 AssociationAttribute.Storage 屬性中使用的值,其大小寫與程式碼其他部分使用的對應屬性名稱一致。 這適用於所有 .NET 程式設計語言,即使是通常不區分大小寫的語言,包括 Visual Basic。 如需 Storage 屬性的詳細資訊,請參閱 DataAttribute.Storage。
AssociationAttribute 特性屬性
使用此屬性指定一個屬性來表示資料庫中的關聯性,例如將外鍵對應至主鍵的關係。 如需了解關聯性的更多資訊,請參閱 如何建立資料庫關聯性。
下表描述此屬性的屬性。
| 房產 | 類型 | 預設 | 說明 |
|---|---|---|---|
| DeleteOnNull | 布爾邏輯 | false |
放在外鍵成員全部不可為 Null 的關聯上時,當關聯設定為 null 時,會刪除物件。 |
| DeleteRule | 繩子 | 沒有 | 將刪除行為新增到關聯中。 |
| IsForeignKey | 布爾邏輯 | false |
如果為 true,則將成員指定為表示資料庫關係的關聯中的外鍵。 |
| IsUnique | 布爾邏輯 | false |
如果為 true,表示外鍵的唯一性約束。 |
| OtherKey | 繩子 | 相關類別的標識碼 | 將目標實體類別的一或多個成員指定為關聯的另一端的鍵值。 |
| ThisKey | 繩子 | 包含類別的識別碼 | 指定這個實體類別的成員,以代表關聯這一端的鍵值。 |
如需詳細資訊,請參閱AssociationAttribute。
備註
AssociationAttribute 和 ColumnAttribute 的 Storage 屬性值具區分大小寫的特性。 例如,請確保在 AssociationAttribute.Storage 屬性中使用的值,其大小寫與程式碼其他部分使用的對應屬性名稱一致。 這適用於所有 .NET 程式設計語言,即使是通常不區分大小寫的語言,包括 Visual Basic。 如需 Storage 屬性的詳細資訊,請參閱 DataAttribute.Storage。
InheritanceMappingAttribute 屬性
使用這個屬性來對應繼承階層。
下表描述此屬性的屬性。
| 房產 | 類型 | 預設 | 說明 |
|---|---|---|---|
| Code | 繩子 | 沒有。 必須提供值。 | 指定識別器的代碼值。 |
| IsDefault | 布爾邏輯 | false |
如果為 true,則當存放區中沒有任何歧視性值符合任何一個指定值時,具現化此類型的物件。 |
| Type | 類型 | 沒有。 必須提供值。 | 指定階層中的類別類型。 |
如需詳細資訊,請參閱InheritanceMappingAttribute。
FunctionAttribute 屬性
使用這個屬性將方法指定為表示資料庫中的預存程式或使用者定義函數。
下表描述此屬性的屬性。
| 房產 | 類型 | 預設 | 說明 |
|---|---|---|---|
| IsComposable | 布爾邏輯 | false |
如果為 false,表示對應至預存程式。 如果為 true,表示對應至使用者定義函式。 |
| Name | 繩子 | 與資料庫中名稱相同的字串 | 指定預存程式或使用者定義函數的名稱。 |
如需詳細資訊,請參閱FunctionAttribute。
ParameterAttribute 屬性
使用這個屬性來對應預存程式方法上的輸入參數。
下表描述此屬性的屬性。
| 房產 | 類型 | 預設 | 說明 |
|---|---|---|---|
| DbType | 繩子 | 沒有 | 指定資料庫類型。 |
| Name | 繩子 | 與資料庫中參數名稱相同的字串 | 指定參數的名稱。 |
如需詳細資訊,請參閱ParameterAttribute。
ResultTypeAttribute 屬性
使用這個屬性來指定結果類型。
下表描述此屬性的屬性。
| 房產 | 類型 | 預設 | 說明 |
|---|---|---|---|
| Type | 類型 | (無) | 用於對應至預存程式之方法以傳回 IMultipleResults。 宣告預存程式的有效或預期類型映射。 |
如需詳細資訊,請參閱ResultTypeAttribute。
DataAttribute 屬性
使用這個屬性來指定名稱和私人記憶體欄位。
下表描述此屬性的屬性。
| 房產 | 類型 | 預設 | 說明 |
|---|---|---|---|
| Name | 繩子 | 與資料庫中的名稱相同 | 指定數據表、資料行等等的名稱。 |
| Storage | 繩子 | 公共存取器 | 指定基礎儲存欄位的名稱。 |
如需詳細資訊,請參閱DataAttribute。