Attribute-Based Kartläggning

LINQ till SQL mappar en SQL Server-databas till en LINQ-till SQL-objektmodell genom att antingen använda attribut eller med hjälp av en extern mappningsfil. Det här avsnittet beskriver den attributbaserade metoden.

I sin mest elementära form mappar LINQ till SQL en databas till en DataContext, en tabell till en klass och kolumner och relationer till egenskaper i dessa klasser. Du kan också använda attribut för att mappa en arvshierarki i objektmodellen. Mer information finns i Så här skapar du objektmodellen i Visual Basic eller C#.

Utvecklare som använder Visual Studio utför vanligtvis attributbaserad mappning med hjälp av objektrelationsdesignern. Du kan också använda kommandoradsverktyget SQLMetal, eller så kan du handkoda attributen själv. Mer information finns i Så här skapar du objektmodellen i Visual Basic eller C#.

Anmärkning

Du kan också mappa med hjälp av en extern XML-fil. Mer information finns i Extern mappning.

I följande avsnitt beskrivs attributbaserad mappning i detalj. Mer information finns i namnområdet System.Data.Linq.Mapping.

DatabaseAttribute-attribut

Använd det här attributet för att ange standardnamnet för databasen när ett namn inte anges av anslutningen. Det här attributet är valfritt, men om du använder det måste du använda Name egenskapen enligt beskrivningen i följande tabell.

Fastighet Typ Förinställning Beskrivning
Name Sträng Se Name Används med dess Name egenskap, anger namnet på databasen.

Mer information finns i DatabaseAttribute.

TableAttribute-attribut

Använd det här attributet för att ange en klass som en entitetsklass som är associerad med en databastabell eller vy. LINQ till SQL behandlar klasser som har det här attributet som beständiga klasser. I följande tabell beskrivs egenskapen Name .

Fastighet Typ Förinställning Beskrivning
Name Sträng Samma sträng som klassnamn Anger en klass som en entitetsklass som är associerad med en databastabell.

Mer information finns i TableAttribute.

ColumnAttribute-attribut

Använd det här attributet om du vill ange en medlem i en entitetsklass för att representera en kolumn i en databastabell. Du kan använda det här attributet för valfritt fält eller en egenskap.

Endast de medlemmar som du identifierar som kolumner hämtas och sparas när LINQ till SQL sparar ändringar i databasen. Medlemmar utan det här attributet antas vara icke-beständiga och skickas inte för infogningar eller uppdateringar.

I följande tabell beskrivs egenskaperna för det här attributet.

Fastighet Typ Förinställning Beskrivning
AutoSync Autosynkronisering Aldrig Instruerar CLR (Common Language Runtime) att hämta värdet efter en infognings- eller uppdateringsåtgärd.

Alternativ: Always, Never, OnUpdate, OnInsert.
CanBeNull Boolesk true Anger att en kolumn kan innehålla null-värden.
DbType Sträng Härledd databaskolumntyp Använder databastyper och modifierare för att ange typen av databaskolumn.
Expression Sträng Tomt Definierar en beräknad kolumn i en databas.
IsDbGenerated Boolesk false Anger att en kolumn innehåller värden som databasen genererar automatiskt.
IsDiscriminator Boolesk false Anger att kolumnen innehåller ett diskriminerande värde för en LINQ-till SQL-arvshierarki.
IsPrimaryKey Boolesk false Anger att den här klassmedlemmen representerar en kolumn som är eller är en del av tabellens primära nycklar.
IsVersion Boolesk false Identifierar kolumntypen för medlemmen som en databastidsstämpel eller versionsnummer.
UpdateCheck UpdateCheck Always, såvida inte IsVersion är true för en medlem Anger hur LINQ till SQL närmar sig identifiering av optimistiska samtidighetskonflikter.

Mer information finns i ColumnAttribute.

Anmärkning

Egenskapsvärdena AssociationAttribute och ColumnAttribute Storage är skiftlägeskänsliga. Kontrollera till exempel att värden som används i attributet för egenskapen AssociationAttribute.Storage matchar fallet för motsvarande egenskapsnamn som används någon annanstans i koden. Detta gäller för alla .NET-programmeringsspråk, även de som vanligtvis inte är skiftlägeskänsliga, inklusive Visual Basic. Mer information om egenskapen Storage finns i DataAttribute.Storage.

AssociationAttribute-attribut

Använd det här attributet för att ange en egenskap som representerar en association i databasen, till exempel som en relation mellan utländsk nyckel och primärnyckel. Mer information om relationer finns i Så här: Mappa databasrelationer.

I följande tabell beskrivs egenskaperna för det här attributet.

Fastighet Typ Förinställning Beskrivning
DeleteOnNull Boolesk false När objektet placeras i en association vars främmande nyckelmedlemmar alla är icke-nullbara, tas objektet bort när associationen sätts till null.
DeleteRule Sträng Ingen Lägger till borttagningsbeteende i en association.
IsForeignKey Boolesk false Om sant, anger medlemmen som extern nyckel i en association som representerar en databasrelation.
IsUnique Boolesk false Om sant, indikerar en unikhetsbegränsning för främmande nyckel.
OtherKey Sträng ID för den relaterade klassen Anger en eller flera medlemmar i målentitetsklassen som nyckelvärden på andra sidan associationen.
ThisKey Sträng ID för den innehållande klassen Anger medlemmar i den här entitetsklassen som representerar nyckelvärdena på den här sidan av associationen.

Mer information finns i AssociationAttribute.

Anmärkning

Egenskapsvärdena AssociationAttribute och ColumnAttribute Storage är skiftlägeskänsliga. Kontrollera till exempel att värden som används i attributet för egenskapen AssociationAttribute.Storage matchar fallet för motsvarande egenskapsnamn som används någon annanstans i koden. Detta gäller för alla .NET-programmeringsspråk, även de som vanligtvis inte är skiftlägeskänsliga, inklusive Visual Basic. Mer information om egenskapen Storage finns i DataAttribute.Storage.

InheritanceMappingAttribute-attribut

Använd det här attributet för att mappa en arvshierarki.

I följande tabell beskrivs egenskaperna för det här attributet.

Fastighet Typ Förinställning Beskrivning
Code Sträng Ingen. Värdet måste anges. Anger kodvärdet för diskriminatorn.
IsDefault Boolesk false Om sant instansieras ett objekt av den här typen när inget diskriminatoriskt värde i lagringen matchar något av de angivna värdena.
Type Typ Ingen. Värdet måste anges. Anger klasstyp i hierarkin.

Mer information finns i InheritanceMappingAttribute.

Funktionselementattribut

Använd det här attributet för att ange en metod som representerar en lagrad procedur eller användardefinierad funktion i databasen.

I följande tabell beskrivs egenskaperna för det här attributet.

Fastighet Typ Förinställning Beskrivning
IsComposable Boolesk false Om det är falskt anger det mappning till en lagrad procedur. Om sant anger mappning till en användardefinierad funktion.
Name Sträng Samma sträng som namnet i databasen Anger namnet på den lagrade proceduren eller den användardefinierade funktionen.

Mer information finns i FunctionAttribute.

ParameterAttribute-attribut

Använd det här attributet för att mappa indataparametrar på metoder för lagrad procedur.

I följande tabell beskrivs egenskaperna för det här attributet.

Fastighet Typ Förinställning Beskrivning
DbType Sträng Ingen Anger databastyp.
Name Sträng Samma sträng som parameternamnet i databasen Anger ett namn på parametern.

Mer information finns i ParameterAttribute.

ResultTypeAttribute-attribut

Använd det här attributet för att ange en resultattyp.

I följande tabell beskrivs egenskaperna för det här attributet.

Fastighet Typ Förinställning Beskrivning
Type Typ (Ingen) Används på metoder som mappats till lagrade procedurer som returnerar IMultipleResults. Deklarerar giltiga eller förväntade typmappningar för den lagrade proceduren.

Mer information finns i ResultTypeAttribute.

DataAttribute-attribut

Använd det här attributet för att ange namn och privata lagringsfält.

I följande tabell beskrivs egenskaperna för det här attributet.

Fastighet Typ Förinställning Beskrivning
Name Sträng Samma som namnet i databasen Anger namnet på tabellen, kolumnen och så vidare.
Storage Sträng Offentliga åtkomstmetoder Anger namnet på det underliggande lagringsfältet.

Mer information finns i DataAttribute.

Se även