屬性架構對應
LINQ to SQL 會藉由套用屬性或使用外部對應檔,將 SQL Server 資料庫對應至 LINQ to SQL 物件模型。 本主題概述以屬性 (Attribute) 為基礎的方法。
以最基本形式存在的 LINQ to SQL 會將資料庫對應至 DataContext、將資料表對應至類別,並且將資料行和關聯性對應至這些類別中的屬性。 您也可以使用屬性 (Attribute) 來對應物件模型中的繼承階層架構 (Inheritance Hierarchy)。 如需詳細資訊,請參閱作法:在 Visual Basic 或 C# 中產生物件模型。
使用 Visual Studio 的開發人員通常會使用物件關聯式設計工具來執行屬性型對應。 您也可以使用 SQLMetal 命令列工具,或者自行撰寫屬性的程式碼。 如需詳細資訊,請參閱作法:在 Visual Basic 或 C# 中產生物件模型。
注意
您也可以使用外部 XML 檔進行對應。 如需詳細資訊,請參閱外部對應。
下列各節會詳細說明以屬性 (Attribute) 為基礎的對應。 如需詳細資訊,請參閱 System.Data.Linq.Mapping。
DatabaseAttribute 屬性
當連接未提供資料庫名稱時,請使用這個屬性 (Attribute) 指定資料庫的預設名稱。 這個屬性 (Attribute) 為選擇性屬性,但如果您加以使用,就必須套用 Name 屬性 (Property),如下表中的說明。
屬性 | 類型 | 預設 | 描述 |
---|---|---|---|
Name | String | 請參閱Name | 搭配其 Name 屬性 (Property) 使用,可以指定資料庫的名稱。 |
如需詳細資訊,請參閱DatabaseAttribute。
TableAttribute 屬性
使用這個屬性可以指定某個類別,做為與資料庫資料表或檢視相關聯的實體類別。 LINQ to SQL 會將具有這個屬性的類別視為持續性類別。 下表說明 Name 屬性 (Property)。
屬性 | 類型 | 預設 | 描述 |
---|---|---|---|
Name | String | 與類別名稱相同的字串 | 指定某個類別,做為與資料庫資料表相關聯的實體類別。 |
如需詳細資訊,請參閱TableAttribute。
ColumnAttribute 屬性
使用這個屬性 (Attribute) 可以指定實體類別的成員,以代表資料庫資料表中的資料行。 您可以將這個屬性 (Attribute) 套用至任何欄位或屬性 (Property)。
當 LINQ to SQL 將變更儲存至資料庫時,只會擷取和保存經您識別為資料行的成員。 不具此屬性 (Attribute) 的成員會被認為是非持續性的成員,而不會送出以進行插入或更新。
下表說明這個屬性 (Attribute) 的屬性 (Property)。
屬性 | 類型 | 預設 | 描述 |
---|---|---|---|
AutoSync | AutoSync | 永不 | 指示 Common Language Runtime (CLR) 在插入或更新作業之後擷取值。 選項:永遠、永不、OnUpdate、OnInsert。 |
CanBeNull | 布林值 | true |
表示資料行可以包含 Null 值。 |
DbType | String | 推斷的資料庫資料行型別 | 使用資料庫型別和修飾詞 (Modifier) 來指定資料庫資料行的型別。 |
Expression | String | 空的 | 定義資料庫中的計算資料行。 |
IsDbGenerated | 布林值 | false |
表示資料行含有資料庫自動產生的值。 |
IsDiscriminator | 布林值 | false |
表示資料行含有 LINQ to SQL 繼承階層架構所需的鑑別子值。 |
IsPrimaryKey | 布林值 | false |
表示這個類別成員是資料表的主索引鍵 (可能是唯一一個也可能是多個主索引鍵之一)。 |
IsVersion | 布林值 | false |
以資料庫時間戳記或版本號碼識別成員的資料行型別。 |
UpdateCheck | UpdateCheck | Always ,除非成員的 IsVersion 為 true |
指定 LINQ to SQL 如何進行開放式同步存取衝突的偵測。 |
如需詳細資訊,請參閱ColumnAttribute。
注意
AssociationAttribute 和 ColumnAttribute Storage 屬性值會區分大小寫。 例如,請確定用於 AssociationAttribute.Storage 屬性 (Property) 之屬性 (Attribute) 中的值與用於程式碼中其他位置之對應屬性 (Property) 名稱的大小寫相符。 這適用於所有 .NET 程式設計語言,甚至是通常不區分大小寫,包括 Visual Basic。 如需 Storage 屬性的詳細資訊,請參閱 DataAttribute.Storage。
AssociationAttribute 屬性
使用這個屬性 (Attribute) 可以指定屬性 (Property),以代表資料庫中的關聯,例如外部索引鍵對主索引鍵的關聯性。 如需關聯性的詳細資訊,請參閱作法:對應資料庫關聯性。
下表說明這個屬性 (Attribute) 的屬性 (Property)。
屬性 | 類型 | 預設 | 描述 |
---|---|---|---|
DeleteOnNull | 布林值 | false |
如果位於外部索引鍵成員都不可為 null 的關聯上,則會在關聯設為 null 時刪除物件。 |
DeleteRule | String | 無 | 將刪除行為加入至關聯。 |
IsForeignKey | 布林值 | false |
若為 true,則指定這個成員做為代表資料庫關聯性之關聯中的外部索引鍵。 |
IsUnique | 布林值 | false |
若為 true,則表示外部索引鍵有唯一性條件約束。 |
OtherKey | String | 相關類別的 ID | 指定目標實體類別的一個或多個成員,做為關聯另一端的索引值。 |
ThisKey | String | 包含類別的 ID | 指定這個實體類別的成員代表關聯這一端的索引值。 |
如需詳細資訊,請參閱AssociationAttribute。
注意
AssociationAttribute 和 ColumnAttribute Storage 屬性值會區分大小寫。 例如,請確定用於 AssociationAttribute.Storage 屬性 (Property) 之屬性 (Attribute) 中的值與用於程式碼中其他位置之對應屬性 (Property) 名稱的大小寫相符。 這適用於所有 .NET 程式設計語言,甚至是通常不區分大小寫,包括 Visual Basic。 如需 Storage 屬性的詳細資訊,請參閱 DataAttribute.Storage。
InheritanceMappingAttribute 屬性
使用這個屬性可以對應繼承階層架構。
下表說明這個屬性 (Attribute) 的屬性 (Property)。
屬性 | 類型 | 預設 | 描述 |
---|---|---|---|
Code | String | 無。 必須提供值。 | 指定鑑別子的程式碼值。 |
IsDefault | 布林值 | false |
若為 true,則在存放區中沒有鑑別子值符合所指定的任何一個值時,具現化這個型別的物件。 |
Type | 類型 | 無。 必須提供值。 | 指定階層架構中這個類別的型別。 |
如需詳細資訊,請參閱InheritanceMappingAttribute。
FunctionAttribute 屬性
使用這個屬性可以指定方法,以代表資料庫中的預存程序或使用者定義的函式。
下表說明這個屬性 (Attribute) 的屬性 (Property)。
屬性 | 類型 | 預設 | 描述 |
---|---|---|---|
IsComposable | 布林值 | false |
若為 false,則表示對應至預存程序。 若為 true,則表示對應至使用者定義函式。 |
Name | String | 與資料庫中的名稱相同的字串 | 指定預存程序或使用者定義函式的名稱。 |
如需詳細資訊,請參閱FunctionAttribute。
ParameterAttribute 屬性
使用這個屬性可以對應預存程序方法的輸入參數。
下表說明這個屬性 (Attribute) 的屬性 (Property)。
屬性 | 類型 | 預設 | 描述 |
---|---|---|---|
DbType | String | 無 | 指定資料庫型別。 |
Name | String | 與資料庫中的參數名稱相同的字串 | 指定參數的名稱。 |
如需詳細資訊,請參閱ParameterAttribute。
ResultTypeAttribute 屬性
使用這個屬性可以指定結果型別。
下表說明這個屬性 (Attribute) 的屬性 (Property)。
屬性 | 類型 | 預設 | 描述 |
---|---|---|---|
Type | 類型 | (無) | 用在對應至會傳回 IMultipleResults 之預存程序的方法中。 宣告預存程序的有效或應有的型別對應。 |
如需詳細資訊,請參閱ResultTypeAttribute。
DataAttribute 屬性
使用這個屬性可以指定名稱和私用儲存欄位。
下表說明這個屬性 (Attribute) 的屬性 (Property)。
屬性 | 類型 | 預設 | 描述 |
---|---|---|---|
Name | String | 與資料庫中的名稱相同 | 指定資料表、資料行等的名稱。 |
Storage | String | 公用存取子 | 指定基礎儲存欄位的名稱。 |
如需詳細資訊,請參閱DataAttribute。