Megosztás a következőn keresztül:


Kapcsolatok létrehozása adathalmazok között .NET-keretrendszeralkalmazásokban

Megjegyzés:

Az DataSet osztály és a kapcsolódó osztályok a 2000-es évek elejétől származó régi .NET-keretrendszer-technológiák, amelyek lehetővé teszik az alkalmazások számára a memóriában lévő adatokkal való munkát, miközben az alkalmazások leválasztva vannak az adatbázisról. A technológiák különösen hasznosak az olyan alkalmazások esetében, amelyek lehetővé teszik a felhasználók számára az adatok módosítását és a módosítások visszaállítását az adatbázisba. Bár az adathalmazok bizonyítottan sikeres technológiának számítanak, az új .NET-alkalmazásokhoz ajánlott az Entity Framework Core használata. Az Entity Framework természetesebb módot kínál a táblázatos adatok objektummodellként való használatához, és egyszerűbb programozási felülettel rendelkezik.

A kapcsolódó adattáblákat DataRelation tartalmazó adathalmazok objektumokkal jelölik a táblák közötti szülő-gyermek kapcsolatot, és egymástól származó kapcsolódó rekordokat adnak vissza. Az adatforrás-konfigurációs varázslóval vagy az Adatkészlettervezővel kapcsolódó táblákat adhat hozzá az adathalmazokhoz, ezzel létrehozza és konfigurálja az DataRelation objektumot.

Az DataRelation objektum két funkciót hajt végre:

  • Elérhetővé teheti azokat a rekordokat, amelyek ahhoz a rekordhoz kapcsolódnak, amellyel dolgozik. Gyermekrekordokat biztosít, ha szülőrekordban (GetChildRows) és szülőrekordban dolgozik, ha gyermekrekordot (GetParentRow) használ.

  • Kényszerítheti a hivatkozási integritás korlátozásait, például a kapcsolódó gyermekrekordok törlését a szülőrekord törlésekor.

Fontos megérteni a valódi illesztés és az objektum függvénye közötti különbséget DataRelation . Igaz illesztés esetén a rekordok a szülő- és gyermektáblákból származnak, és egyetlen, egybesimított rekordhalmazba kerülnek. A DataRelation objektum használatakor a rendszer nem hoz létre új rekordhalmazt. Ehelyett a DataRelation nyomon követi a táblák közötti kapcsolatot, és szinkronban tartja a szülő- és gyermekrekordokat.

DataRelation-objektumok és -korlátozások

Az DataRelation objektum a következő kényszerek létrehozására és kényszerítésére is használható:

  • Egyedi kényszer, amely garantálja, hogy a tábla egyik oszlopa nem tartalmaz duplikált elemeket.

  • Idegenkulcs-korlátozás, amely az adathalmaz szülő- és gyermektáblái közötti hivatkozási integritás fenntartására használható.

Az objektumban DataRelation megadott korlátozások a megfelelő objektumok automatikus létrehozásával vagy a tulajdonságok beállításával implementálhatók. Ha idegenkulcs-korlátozást hoz létre az DataRelation objektum használatával, az ForeignKeyConstraint osztály példányai hozzá lesznek adva az DataRelation objektum tulajdonságához ChildKeyConstraint .

Az egyedi korlátozást vagy úgy valósíthatja meg, hogy egyszerűen beállítja egy adatoszlop Unique tulajdonságát true, vagy úgy, hogy hozzáad egy UniqueConstraint osztály példányát az DataRelation objektum ParentKeyConstraint tulajdonságához. Az adathalmazok kényszereinek felfüggesztéséről további információt az adathalmaz kitöltése során a kényszerek kikapcsolása című témakörben talál.

Hivatkozási integritási szabályok

Az idegenkulcs-korlátozás részeként három ponton alkalmazható hivatkozási integritási szabályokat adhat meg:

  • Szülőrekord frissítésekor

  • Szülőrekord törlésekor

  • Ha a módosítást elfogadják vagy elutasítják

A létrehozható szabályok az Rule enumerálásban vannak megadva, és az alábbi táblázatban szerepelnek.

Idegenkulcs-korlátozási szabály Tevékenység
Cascade A szülőrekord módosítása (frissítése vagy törlése) a gyermektábla kapcsolódó rekordjaiban is történik.
SetNull A gyermekrekordok nem törlődnek, de a gyermekrekordok idegen kulcsa a következőre DBNullvan állítva: . Ezzel a beállítással a gyermekrekordok "árvaként" hagyhatók, vagyis nincs kapcsolatuk a szülőrekordokkal. Jegyzet: A szabály használata érvénytelen adatokat eredményezhet a gyermektáblában.
SetDefault A kapcsolódó gyermekrekordok idegen kulcsa az alapértelmezett értékre áll, ahogy azt az oszlop DefaultValue tulajdonsága meghatározza.
None A kapcsolódó gyermekrekordok nem módosulnak. Ezzel a beállítással a gyermekrekordok érvénytelen szülőrekordokra mutató hivatkozásokat tartalmazhatnak.

Az adathalmaztáblák frissítéseiről további információt az Adatok mentése az adatbázisba című témakörben talál.

Kizárólag kényszerkapcsolatok

Amikor létrehoz egy DataRelation objektumot, megadhatja, hogy a reláció csak kényszerek kikényszerítésére legyen használva, vagyis a kapcsolódó rekordok elérésére sem lesz használható. Ezzel a beállítással olyan adathalmazt hozhat létre, amely valamivel hatékonyabb, és kevesebb metódust tartalmaz, mint egy a kapcsolódó rekordok funkcióval. A kapcsolódó rekordokhoz azonban nem férhet hozzá. A csak kényszerrel rendelkező kapcsolatok például megakadályozzák a gyermekrekordokkal rendelkező szülőrekordok törlését, és a gyermekrekordok nem érhetők el a szülőn keresztül.

Adatkapcsolat manuális létrehozása az Adatkészlet-tervezőben

Amikor a Visual Studióban az adattervező eszközökkel hoz létre adattáblákat, a kapcsolatok automatikusan létrejönnek, ha az adatok forrásából gyűjthetők az adatok. Ha manuálisan adja hozzá az adattáblákat az EszközkészletAdatkészlet lapjáról, előfordulhat, hogy manuálisan kell létrehoznia a kapcsolatot. Az objektumok programozott létrehozásáról DataRelation további információt az Adatrelációk hozzáadása című témakörben talál.

Az adattáblák közötti kapcsolatok vonalakként jelennek meg az Adatkészlettervezőben, az egy-a-többhöz kapcsolatot ábrázoló kulcs és végtelen jel formájában. Alapértelmezés szerint a kapcsolat neve nem jelenik meg a tervezőfelületen.

Megjegyzés:

A cikkben található utasítások a Visual Studióban elérhető interaktív fejlesztési felület (IDE) legújabb verzióját mutatják be. Előfordulhat, hogy a számítógép különböző neveket vagy helyeket jelenít meg a felhasználói felület egyes elemeihez. Előfordulhat, hogy a Visual Studio egy másik verzióját vagy különböző környezeti beállításokat használ. További információ: Ideszemélyre szabása.

Kapcsolat létrehozása két adattábla között

  1. Nyissa meg az adathalmazt a Adatkészlet-tervező-ben. További információ : Útmutató: Adathalmaz létrehozása az adathalmaz-tervezőben.

  2. Húzzon egy relációs objektumot az Adatkészlet eszközkészletből a kapcsolat gyermekadattáblájába.

    Megnyílik a Reláció párbeszédpanel, amely feltölti a Gyermektábla mezőt azzal a táblával, amelybe a Relációs objektumot húzta.

  3. Válassza ki a szülőtáblát a Szülőtábla mezőből. A szülőtábla az egy a többhöz típusú kapcsolat "egy" oldalán tartalmaz rekordokat.

  4. Ellenőrizze, hogy a megfelelő gyermektábla jelenik-e meg a Gyermektábla mezőben. A gyermektábla egy-a-többhöz kapcsolat "több" oldalán lévő rekordokat tartalmaz.

  5. Írja be a kapcsolat nevét a Név mezőbe, vagy hagyja meg az alapértelmezett nevet a kijelölt táblák alapján. Ez a kódban szereplő tényleges DataRelation objektum neve.

  6. Jelölje ki azokat az oszlopokat, amelyek összekapcsolják a táblákat a Kulcsoszlopok és az Idegen kulcsoszlopok listákban.

  7. Válassza ki, hogy létre szeretne-e hozni egy relációt, kényszert vagy mindkettőt.

  8. Jelölje ki vagy törölje a jelet a Beágyazott reláció mezőből. Ha ezt a beállítást választja, a Nested tulajdonság true értékre van állítva, és ez a viszony gyereksorait a szülőoszlopba ágyazza, amikor ezek a sorok XML-adatként vannak írva vagy szinkronizálva a XmlDataDocument-vel. További információ: DataRelations beágyazása.

  9. Állítsa be a szabályok kikényszerítését a táblák rekordjainak módosításakor. További információért lásd Rule.

  10. Kattintson az OK gombra a kapcsolat létrehozásához. A tervezőben megjelenik egy relációs vonal a két tábla között.

Relációs név megjelenítése az Adathalmaz-tervezőben

  1. Nyissa meg az adathalmazt a Adatkészlet-tervező-ben. További információ : Útmutató: Adathalmaz létrehozása az adathalmaz-tervezőben.

  2. Az Adatok menüben válassza a Relációs címkék megjelenítése parancsot a relációs név megjelenítéséhez. Törölje a parancsot a relációs név elrejtéséhez.