Udostępnij za pośrednictwem


mapowanie Attribute-Based

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 DataContext, tabelę na klasę, 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 projektanta relacyjnego 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 / Notatka

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, zajrzyj do przestrzeni nazw System.Data.Linq.Mapping.

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.

Majątek Typ Wartość domyślna Opis
Name Sznurek 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. Tabela poniżej opisuje właściwość Name.

Majątek Typ Wartość domyślna Opis
Name Sznurek 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ć członka klasy encji do reprezentacji 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 zapisywane, gdy LINQ to SQL zapisuje zmiany w bazie danych. Zakłada się, że członkowie bez tego atrybutu są nietrwale i nie są przesyłani do wstawiania ani aktualizacji.

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

Majątek Typ Wartość domyślna Opis
AutoSync Autosynchronizuj Nigdy Instruuje środowisko uruchomieniowe języka wspólnego (CLR) o pobranie wartości po operacji wstawiania lub aktualizacji.

Opcje: Zawsze, Nigdy, OnUpdate, OnInsert.
CanBeNull boolean true Wskazuje, że kolumna może zawierać wartości null.
DbType Sznurek Wnioskowany typ kolumny bazy danych Używa typów baz danych i modyfikatorów, aby określić typ kolumny bazy danych.
Expression Sznurek Pusty Definiuje obliczoną kolumnę w bazie danych.
IsDbGenerated boolean false Wskazuje, że kolumna zawiera wartości generowane automatycznie przez bazę danych.
IsDiscriminator boolean false Wskazuje, że kolumna zawiera dyskryminującą wartość hierarchii dziedziczenia LINQ to SQL.
IsPrimaryKey boolean false Określa, że ten element klasy reprezentuje kolumnę, która jest lub jest częścią klucza podstawowego tabeli.
IsVersion boolean false Określa typ kolumny członka jako sygnaturę czasową bazy danych lub numer wersji.
UpdateCheck Sprawdzanie aktualizacji Always, chyba że IsVersion jest true dla członka 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 / Notatka

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 odpowiadają wielkości liter odpowiednich nazw właściwości używanych w kodzie. Dotyczy to wszystkich języków programowania .NET, nawet tych, które zazwyczaj nie rozróżniają wielkości liter, w tym Visual Basic. Aby uzyskać więcej informacji na temat właściwości Storage, zobacz DataAttribute.Storage.

Atrybut AssociationAttribute

Skorzystaj z tego atrybutu, aby wyznaczyć właściwość reprezentującą skojarzenie w bazie danych, takie jak związek klucza obcego z kluczem podstawowym. 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.

Majątek Typ Wartość domyślna Opis
DeleteOnNull boolean false W przypadku skojarzenia, którego składowe klucza obcego są nienullowalne, usuwa obiekt, gdy skojarzenie zostaje ustawione na null.
DeleteRule Sznurek Żaden Dodaje zachowanie usuwania do skojarzenia.
IsForeignKey boolean false Jeśli to prawda, wyznacza członka jako klucz obcy w związku reprezentującym relację bazy danych.
IsUnique boolean false Jeśli wartość true, wskazuje ograniczenie unikatowości klucza obcego.
OtherKey Sznurek Identyfikator powiązanej klasy Określa jednego lub więcej członków docelowej klasy jednostki jako wartości kluczowe po drugiej stronie skojarzeń.
ThisKey Sznurek Identyfikator klasy zawierającej Wyznacza członków tej klasy encji do reprezentowania wartości kluczy po tej stronie skojarzenia.

Aby uzyskać więcej informacji, zobacz AssociationAttribute.

Uwaga / Notatka

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 odpowiadają wielkości liter odpowiednich nazw właściwości używanych w kodzie. Dotyczy to wszystkich języków programowania .NET, nawet tych, które zazwyczaj nie rozróżniają 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.

Majątek Typ Wartość domyślna Opis
Code Sznurek Żaden. Należy podać wartość. Określa wartość kodu dyskryminującego.
IsDefault boolean false Jeśli warunek jest spełniony, tworzone jest wystąpienie obiektu tego typu, gdy żadna wartość dyskryminująca w magazynie nie odpowiada żadnej z podanych wartości.
Type Typ Żaden. Należy podać wartość. Określa typ klasy w hierarchii.

Aby uzyskać więcej informacji, zobacz InheritanceMappingAttribute.

Atrybut FunctionAttribute

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.

Majątek Typ Wartość domyślna Opis
IsComposable boolean false Jeśli wartość jest fałszywa, wskazuje mapowanie na procedurę składowaną. Jeśli wartość true, wskazuje mapowanie na funkcję zdefiniowaną przez użytkownika.
Name Sznurek 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 w metodach procedur składowanych.

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

Majątek Typ Wartość domyślna Opis
DbType Sznurek Żaden Określa typ bazy danych.
Name Sznurek Taki sam ciąg jak nazwa parametru w bazie danych Określa nazwę parametru.

Aby uzyskać więcej informacji, zobacz ParameterAttribute.

Atrybut ResultTypeAttribute

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

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

Majątek Typ Wartość domyślna Opis
Type Typ (N/A) Używane w metodach mapowanych na procedury składowane, które zwracają IMultipleResults. 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 prywatne pola pamięci.

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

Majątek Typ Wartość domyślna Opis
Name Sznurek Taka sama jak nazwa w bazie danych Określa nazwę tabeli, kolumny itd.
Storage Sznurek Publiczne metody dostępu Określa nazwę bazowego pola magazynu.

Aby uzyskać więcej informacji, zobacz DataAttribute.

Zobacz także