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