Dela via


Attributbaserad mappning

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#.

Kommentar

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 System.Data.Linq.Mapping namnområdet.

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.

Property Type Standardvärde beskrivning
Name String 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 .

Property Type Standardvärde beskrivning
Name String 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.

Property Type Standardvärde beskrivning
AutoSync Autosync Aldrig Instruerar CLR (Common Language Runtime) att hämta värdet efter en infognings- eller uppdateringsåtgärd.

Alternativ: Always, Never, OnUpdate, OnInsert.
CanBeNull Booleskt true Anger att en kolumn kan innehålla null-värden.
DbType String Härledd databaskolumntyp Använder databastyper och modifierare för att ange typen av databaskolumn.
Expression String Tomt Definierar en beräknad kolumn i en databas.
IsDbGenerated Booleskt false Anger att en kolumn innehåller värden som databasen genererar automatiskt.
IsDiscriminator Booleskt false Anger att kolumnen innehåller ett diskriminerande värde för en LINQ-till SQL-arvshierarki.
IsPrimaryKey Booleskt false Anger att den här klassmedlemmen representerar en kolumn som är eller är en del av tabellens primära nycklar.
IsVersion Booleskt 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.

Kommentar

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 en sekundärnyckel till primärnyckelrelation. Mer information om relationer finns i Så här: Mappa databasrelationer.

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

Property Type Standardvärde beskrivning
DeleteOnNull Booleskt false När objektet placeras i en association vars sekundärnyckelmedlemmar alla inte kan null-värdet tas bort när associationen är inställd på null.
DeleteRule String Ingen Lägger till borttagningsbeteende i en association.
IsForeignKey Booleskt false Om sant, anger medlemmen som sekundärnyckel i en association som representerar en databasrelation.
IsUnique Booleskt false Om sant indikerar en unikhetsbegränsning för sekundärnyckeln.
OtherKey String ID för den relaterade klassen Anger en eller flera medlemmar i målentitetsklassen som nyckelvärden på andra sidan associationen.
ThisKey String 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.

Kommentar

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.

Property Type Standardvärde beskrivning
Code String Inga. Värdet måste anges. Anger kodvärdet för diskriminatorn.
IsDefault Booleskt false Om sant instansierar ett objekt av den här typen när inget diskriminerande värde i arkivet matchar något av de angivna värdena.
Type Typ Inga. Värdet måste anges. Anger klassens typ i hierarkin.

Mer information finns i InheritanceMappingAttribute.

FunctionAttribute-attribut

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.

Property Type Standardvärde beskrivning
IsComposable Booleskt false Om det är falskt anger det mappning till en lagrad procedur. Om sant anger mappning till en användardefinierad funktion.
Name String 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.

Property Type Standardvärde beskrivning
DbType String Ingen Anger databastyp.
Name String 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.

Property Type Standardvärde 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.

Property Type Standardvärde beskrivning
Name String Samma som namnet i databasen Anger namnet på tabellen, kolumnen och så vidare.
Storage String Offentliga accessorer Anger namnet på det underliggande lagringsfältet.

Mer information finns i DataAttribute.

Se även