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.