Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Klassen DataSet och relaterade klasser är äldre .NET Framework-tekniker från början av 2000-talet som gör det möjligt för program att arbeta med data i minnet medan apparna kopplas från databasen. Teknikerna är särskilt användbara för appar som gör det möjligt för användare att ändra data och spara ändringarna tillbaka till databasen. Även om datauppsättningar är en bevisad framgångsrik teknik är den rekommenderade metoden för nya .NET-program att använda Entity Framework Core. Entity Framework är ett mer naturligt sätt att arbeta med tabelldata som objektmodeller och har ett enklare programmeringsgränssnitt.
Datauppsättningar som innehåller relaterade datatabeller använder DataRelation objekt för att representera en överordnad/underordnad relation mellan tabellerna och för att returnera relaterade poster från varandra. När du lägger till relaterade tabeller i datauppsättningar med hjälp av konfigurationsguiden för datakälla, eller Datauppsättningsdesignern, skapas och konfigureras DataRelation objektet åt dig.
Objektet DataRelation utför två funktioner:
Den kan göra register som är relaterade till ett register du arbetar med tillgängliga. Den tillhandahåller underordnade poster om du är i en överordnad post (GetChildRows) och en överordnad post om du arbetar med en underordnad post (GetParentRow).
Det kan framtvinga begränsningar för referensintegritet, till exempel att ta bort relaterade barnposter när du tar bort föräldrarnas poster.
Det är viktigt att förstå skillnaden mellan en sann koppling och ett objekts DataRelation funktion. I en äkta sammanslagning tas poster från överordnade och underordnade tabeller och placeras i en enda enkel databasuppsättning. När du använder ett DataRelation objekt skapas ingen ny postuppsättning. I stället övervakar DataRelation relationen mellan tabeller och håller överordnade och underordnade poster synkroniserade.
DataRelation-objekt och begränsningar
Ett DataRelation objekt används också för att skapa och framtvinga följande begränsningar:
En unik begränsning som garanterar att en kolumn i tabellen inte innehåller några dubbletter.
En främmande nyckel-begränsning som kan användas för att upprätthålla referensintegritet mellan en överordnad och en underordnad tabell i en datamängd.
Begränsningar som du anger i ett DataRelation objekt implementeras genom att automatiskt skapa lämpliga objekt eller ange egenskaper. Om du skapar en begränsning för en extern nyckel med hjälp av DataRelation-objektet, läggs instanser av klassen ForeignKeyConstraint till i DataRelation-objektets ChildKeyConstraint-egenskap.
En unik begränsning implementeras antingen genom att helt enkelt ange Unique-egenskapen hos en datakolumn till true, eller genom att lägga till en instans av UniqueConstraint-klassen i DataRelation-objektets ParentKeyConstraint-egenskap. Information om hur du pausar begränsningar i en datauppsättning finns i Inaktivera begränsningar när du fyller i en datauppsättning.
Regler för referensintegritet
Som en del av villkoret främmande nyckel kan du ange referensintegritetsregler som tillämpas på tre ställen:
När en överordnad post uppdateras
När en överordnad post tas bort
När en ändring godkänns eller avvisas
De regler som du kan skapa anges i Rule uppräkningen och visas i följande tabell.
| Regel för främmande nyckelbegränsning | Åtgärd |
|---|---|
| Cascade | Ändringen (uppdatering eller borttagning) som görs i huvudposten uppdateras också i relaterade poster i den underliggande tabellen. |
| SetNull | Underordnade poster tas inte bort, men den främmande nyckeln i de underordnade posterna sätts till DBNull. Med den här inställningen kan underordnade poster lämnas som "föräldralösa" – det vill säga att de inte har någon relation till överordnade poster. Not: Om du använder den här regeln kan det resultera i ogiltiga data i den underordnade tabellen. |
| SetDefault | Främmande nyckeln i de relaterade barnposterna är inställd på standardvärdet (enligt kolumnens DefaultValue egenskap). |
| None | Ingen ändring görs i relaterade underposter. Med den här inställningen kan underordnade poster innehålla referenser till ogiltiga överordnade poster. |
Mer information om uppdateringar i datauppsättningstabeller finns i Spara data tillbaka till databasen.
Villkorsbefriade relationer
När du skapar ett DataRelation objekt har du möjlighet att ange att relationen endast ska användas för att framtvinga begränsningar, dvs. den kommer inte också att användas för att komma åt relaterade poster. Du kan använda det här alternativet för att generera en datauppsättning som är något effektivare och som innehåller färre metoder än en med funktionen related-records. Du kommer dock inte att kunna komma åt relaterade register. Till exempel förhindrar en begränsningsrelation att du tar bort en överordnad post som fortfarande har underordnade poster, och du kan inte komma åt underordnade poster via den överordnade posten.
Skapa en datarelation manuellt i Datauppsättningsdesignern
När du skapar datatabeller med hjälp av datadesignverktygen i Visual Studio skapas relationer automatiskt om informationen kan samlas in från datakällan. Om du lägger till datatabeller manuellt från fliken DataUppsättning i verktygslådan kan du behöva skapa relationen manuellt. Information om hur du skapar DataRelation objekt programmatiskt finns i Lägga till datarelationer.
Relationer mellan datatabeller visas som rader i Datauppsättningsdesignern, med en nyckel och oändlighetstecken som visar en-till-många-aspekten av relationen. Som standard visas inte namnet på relationen på designytan.
Anmärkning
Anvisningarna i den här artikeln illustrerar den senaste versionen av den interaktiva utvecklingsupplevelsen (IDE) som är tillgänglig i Visual Studio. Datorn kan visa olika namn eller platser för vissa av användargränssnittselementen. Du kanske använder en annan version av Visual Studio eller andra miljöinställningar. Mer information finns i Anpassa IDE-.
Skapa en relation mellan två datatabeller
Öppna datauppsättningen i Dataset Designer. Mer information finns i Genomgång: Skapa en datauppsättning i Datauppsättningsdesignern.
Dra ett Relationsobjekt från verktygslådan DataSet till den underordnade datatabellen i relationen.
Dialogrutan Relation öppnas och fyller i rutan Underordnad tabell med tabellen som du drog relationsobjektet till.
Välj den överordnade tabellen i rutan Överordnad tabell . Den överordnade tabellen innehåller poster på "en"-sidan av en en-till-många-relation.
Kontrollera att rätt barntabell visas i rutan Barntabell. Den underordnade tabellen innehåller poster på många-sidan av en en-till-många-relation.
Ange ett namn för relationen i rutan Namn eller lämna standardnamnet baserat på de valda tabellerna. Det här är namnet på det faktiska DataRelation objektet i koden.
Välj de kolumner som ansluter tabellerna i listorna Nyckelkolumner och Sekundärnyckelkolumner .
Välj om du vill skapa en relation, villkor eller båda.
Markera eller avmarkera rutan Kapslad relation . Om du väljer det här alternativet anges Nested egenskapen till
trueoch de underordnade raderna i relationen kapslas i den överordnade kolumnen när dessa rader skrivs som XML-data eller synkroniseras med XmlDataDocument. För mer information, se Kapslade datarelationer.Ange vilka regler som ska tillämpas när du gör ändringar i poster i dessa tabeller. Mer information finns i Rule.
Klicka på OK för att skapa relationen. En relationslinje visas i designern mellan de två tabellerna.
Så här visar du ett relationsnamn i Datauppsättningsdesignern
Öppna datauppsättningen i Dataset Designer. Mer information finns i Genomgång: Skapa en datauppsättning i Datauppsättningsdesignern.
På menyn Data väljer du kommandot Visa relationsetiketter för att visa relationsnamnet. Rensa kommandot för att dölja relationsnamnet.