Mapowanie oparte na atrybutach

LINQ to SQL mapuje bazę danych programu SQL Server na model obiektów LINQ to SQL, stosując atrybuty lub używając zewnętrznego pliku mapowania. W tym temacie opisano podejście oparte na atrybutach.

W najbardziej podstawowej formie LINQ to SQL mapuje bazę danych na tabelę na DataContextklasę, a kolumny i relacje na właściwości w tych klasach. Można również użyć atrybutów do mapowania hierarchii dziedziczenia w modelu obiektów. Aby uzyskać więcej informacji, zobacz How to: Generate the Object Model in Visual Basic or C#(Jak wygenerować model obiektów w Visual Basic lub C#).

Deweloperzy korzystający z programu Visual Studio zazwyczaj wykonują mapowanie oparte na atrybutach przy użyciu Projektant relacyjnych obiektów. Możesz również użyć narzędzia wiersza polecenia SQLMetal lub ręcznie kodować atrybuty samodzielnie. Aby uzyskać więcej informacji, zobacz How to: Generate the Object Model in Visual Basic or C#(Jak wygenerować model obiektów w Visual Basic lub C#).

Uwaga

Można również mapować przy użyciu zewnętrznego pliku XML. Aby uzyskać więcej informacji, zobacz Mapowanie zewnętrzne.

W poniższych sekcjach opisano bardziej szczegółowo mapowanie oparte na atrybutach. Aby uzyskać więcej informacji, zobacz System.Data.Linq.Mapping przestrzeń nazw.

Atrybut DatabaseAttribute

Użyj tego atrybutu, aby określić domyślną nazwę bazy danych, gdy nazwa nie jest dostarczana przez połączenie. Ten atrybut jest opcjonalny, ale jeśli go używasz, musisz zastosować Name właściwość zgodnie z opisem w poniższej tabeli.

Właściwość Type Domyślny opis
Name String Zobacz Name Używana z jej Name właściwością określa nazwę bazy danych.

Aby uzyskać więcej informacji, zobacz DatabaseAttribute.

Atrybut TableAttribute

Użyj tego atrybutu, aby wyznaczyć klasę jako klasę jednostki skojarzona z tabelą bazy danych lub widokiem. LINQ to SQL traktuje klasy, które mają ten atrybut jako klasy trwałe. W poniższej Name tabeli opisano właściwość .

Właściwość Type Domyślny opis
Name String Taki sam ciąg jak nazwa klasy Wyznacza klasę jako klasę jednostki skojarzona z tabelą bazy danych.

Aby uzyskać więcej informacji, zobacz TableAttribute.

Atrybut ColumnAttribute

Użyj tego atrybutu, aby wyznaczyć składową klasy jednostki w celu reprezentowania kolumny w tabeli bazy danych. Ten atrybut można zastosować do dowolnego pola lub właściwości.

Tylko te elementy członkowskie, które są identyfikowane jako kolumny, są pobierane i utrwalane, gdy linQ to SQL zapisuje zmiany w bazie danych. Przyjmuje się, że elementy członkowskie bez tego atrybutu są nietrwale trwałe i nie są przesyłane do wstawień ani aktualizacji.

W poniższej tabeli opisano właściwości tego atrybutu.

Właściwość Type Domyślny opis
AutoSync Autosync Nigdy Instruuje środowisko uruchomieniowe języka wspólnego (CLR) o pobranie wartości po operacji wstawiania lub aktualizacji.

Opcje: Zawsze, Nigdy, OnUpdate, OnInsert.
CanBeNull Wartość logiczna true Wskazuje, że kolumna może zawierać wartości null.
DbType String Wnioskowany typ kolumny bazy danych Używa typów baz danych i modyfikatorów, aby określić typ kolumny bazy danych.
Expression String Pusty Definiuje obliczoną kolumnę w bazie danych.
IsDbGenerated Wartość logiczna false Wskazuje, że kolumna zawiera wartości generowane automatycznie przez bazę danych.
IsDiscriminator Wartość logiczna false Wskazuje, że kolumna zawiera dyskryminującą wartość hierarchii dziedziczenia LINQ to SQL.
IsPrimaryKey Wartość logiczna false Określa, że ten składowy klasy reprezentuje kolumnę, która jest lub jest częścią kluczy podstawowych tabeli.
IsVersion Wartość logiczna false Określa typ kolumny elementu członkowskiego jako sygnaturę czasową bazy danych lub numer wersji.
UpdateCheck Updatecheck Always, chyba że IsVersion dotyczy true elementu członkowskiego Określa sposób podejścia LINQ to SQL do wykrywania optymistycznych konfliktów współbieżności.

Aby uzyskać więcej informacji, zobacz ColumnAttribute.

Uwaga

W wartościach właściwości AssociationAttribute i ColumnAttribute Storage uwzględniana jest wielkość liter. Na przykład upewnij się, że wartości używane w atrybucie właściwości AssociationAttribute.Storage są zgodne z wielkością liter odpowiednich nazw właściwości używanych w innym miejscu w kodzie. Dotyczy to wszystkich języków programowania .NET, nawet tych, które nie są zwykle uwzględniane wielkości liter, w tym Visual Basic. Aby uzyskać więcej informacji na temat właściwości Storage, zobacz DataAttribute.Storage.

Atrybut AssociationAttribute

Użyj tego atrybutu, aby wyznaczyć właściwość reprezentującą skojarzenie w bazie danych, takie jak klucz obcy dla relacji klucza podstawowego. Aby uzyskać więcej informacji na temat relacji, zobacz Jak mapować relacje bazy danych.

W poniższej tabeli opisano właściwości tego atrybutu.

Właściwość Type Domyślny opis
DeleteOnNull Logiczny false W przypadku skojarzenia, którego składowe klucza obcego są niepuste, usuwa obiekt, gdy skojarzenie ma wartość null.
DeleteRule String Brak Dodaje zachowanie usuwania do skojarzenia.
IsForeignKey Wartość logiczna false Jeśli wartość true, wyznacza element członkowski jako klucz obcy w skojarzeniu reprezentującym relację bazy danych.
IsUnique Wartość logiczna false Jeśli wartość true, wskazuje ograniczenie unikatowości klucza obcego.
OtherKey String Identyfikator powiązanej klasy Wyznacza co najmniej jeden element członkowowy docelowej klasy jednostki jako wartości klucza po drugiej stronie skojarzenia.
ThisKey String Identyfikator zawierającej klasy Wyznacza elementy członkowskie tej klasy jednostki, aby reprezentować wartości kluczy po tej stronie skojarzenia.

Aby uzyskać więcej informacji, zobacz AssociationAttribute.

Uwaga

W wartościach właściwości AssociationAttribute i ColumnAttribute Storage uwzględniana jest wielkość liter. Na przykład upewnij się, że wartości używane w atrybucie właściwości AssociationAttribute.Storage są zgodne z wielkością liter odpowiednich nazw właściwości używanych w innym miejscu w kodzie. Dotyczy to wszystkich języków programowania .NET, nawet tych, które nie są zwykle uwzględniane wielkości liter, w tym Visual Basic. Aby uzyskać więcej informacji na temat właściwości Storage, zobacz DataAttribute.Storage.

Atrybut InheritanceMappingAttribute

Użyj tego atrybutu, aby mapować hierarchię dziedziczenia.

W poniższej tabeli opisano właściwości tego atrybutu.

Właściwość Type Domyślny opis
Code String Brak. Należy podać wartość. Określa wartość kodu dyskryminującego.
IsDefault Wartość logiczna false Jeśli wartość true, tworzy wystąpienie obiektu tego typu, gdy żadna wartość dyskryminująca w magazynie nie pasuje do żadnej z określonych wartości.
Type Typ Brak. Należy podać wartość. Określa typ klasy w hierarchii.

Aby uzyskać więcej informacji, zobacz InheritanceMappingAttribute.

FunctionAttribute, atrybut

Użyj tego atrybutu, aby wyznaczyć metodę jako reprezentującą procedurę składowaną lub funkcję zdefiniowaną przez użytkownika w bazie danych.

W poniższej tabeli opisano właściwości tego atrybutu.

Właściwość Type Domyślny opis
IsComposable Logiczny false Jeśli wartość false, wskazuje mapowanie na procedurę składowaną. Jeśli wartość true, wskazuje mapowanie na funkcję zdefiniowaną przez użytkownika.
Name String Ten sam ciąg co nazwa w bazie danych Określa nazwę procedury składowanej lub funkcji zdefiniowanej przez użytkownika.

Aby uzyskać więcej informacji, zobacz FunctionAttribute.

ParameterAttribute, atrybut

Ten atrybut służy do mapowania parametrów wejściowych na metody procedury składowanej.

W poniższej tabeli opisano właściwości tego atrybutu.

Właściwość Type Domyślny opis
DbType String Brak Określa typ bazy danych.
Name String Taki sam ciąg jak nazwa parametru w bazie danych Określa nazwę parametru.

Aby uzyskać więcej informacji, zobacz ParameterAttribute.

ResultTypeAttribute, atrybut

Użyj tego atrybutu, aby określić typ wyniku.

W poniższej tabeli opisano właściwości tego atrybutu.

Właściwość Type Domyślny opis
Type Type (Brak) Używane w metodach mapowanych na procedury składowane, które zwracają IMultipleResultswartość . Deklaruje prawidłowe lub oczekiwane mapowania typów dla procedury składowanej.

Aby uzyskać więcej informacji, zobacz ResultTypeAttribute.

Atrybut DataAttribute

Użyj tego atrybutu, aby określić nazwy i pola magazynu prywatnego.

W poniższej tabeli opisano właściwości tego atrybutu.

Właściwość Type Domyślny opis
Name String Taka sama jak nazwa w bazie danych Określa nazwę tabeli, kolumny itd.
Storage String Publiczne metody dostępu Określa nazwę bazowego pola magazynu.

Aby uzyskać więcej informacji, zobacz DataAttribute.

Zobacz też