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


Meglévő megkötések hozzáadása egy adathalmazhoz

A DataAdapter Fill metódusa csak egy adatforrásból származó táblázatoszlopokat és sorokat tölt kiDataSet; bár a korlátozásokat általában az adatforrás állítja be, a Fill metódus alapértelmezés szerint nem adja hozzá ezeket a sémaadatokat az Adatkészlethez. Ha egy adatforrásból meglévő elsődlegeskulcs-korlátozási adatokkal szeretné feltölteni az Adatkészletet, meghívhatja a DataAdapter FillSchema metódusát, vagy a DataAdapter MissingSchemaAction tulajdonságát AddWithKey értékre állíthatja a Fill hívása előtt. Ez biztosítja, hogy az adathalmaz elsődleges kulcskorlátjai tükrözzék az adatforrásban lévőket. Az idegenkulcs-korlátozásra vonatkozó információk nem szerepelnek a dokumentumban, és explicit módon kell létrehozni őket, ahogyan az a DataTable-korlátozásokban is látható.

Ha sémainformációkat ad hozzá egy Adathalmazhoz, mielőtt adatokat töltené be, biztosítja, hogy az DataTable elsődleges kulcskorlátozások az adathalmaz objektumaihoz tartoznak. Ennek eredményeképpen az adathalmaz kitöltésére irányuló további hívások során az elsődleges kulcs oszlopadatai az adatforrás új sorainak és az egyes DataTable aktuális sorainak egyeztetésére szolgálnak, a táblák aktuális adatai pedig felülíródnak az adatforrásból származó adatokkal. A sémainformációk nélkül az adatforrás új sorai hozzá lesznek fűzve az Adatkészlethez, ami ismétlődő sorokat eredményez.

Feljegyzés

Ha egy adatforrás egy oszlopa automatikus növekményként van azonosítva, a FillSchema metódus vagy az AddWithKey MissingSchemaAction elemével rendelkező Fill metódus létrehoz egy DataColumn értéket, amelynek autoincrement tulajdonsága a truekövetkező. Az AutoIncrementStep és az AutoIncrementSeed értékeket azonban önnek kell beállítania. Az automatikusan növekvő oszlopokról további információt az AutoIncrement-oszlopok létrehozása című témakörben talál.

A FillSchema használata vagy a MissingSchemaAction addWithKey értékre állítása további feldolgozást igényel az adatforrásban az elsődleges kulcsoszlop információinak meghatározásához. Ez a további feldolgozás akadályozhatja a teljesítményt. Ha a tervezéskor ismeri az elsődleges kulcs adatait, javasoljuk, hogy az optimális teljesítmény elérése érdekében explicit módon adja meg az elsődleges kulcs oszlopát vagy oszlopait. A táblák elsődleges kulcsadatainak explicit beállításával kapcsolatos információkért lásd: Elsődleges kulcsok definiálása.

Az alábbi példakód bemutatja, hogyan adhat hozzá sémaadatokat egy DataSethez a FillSchema használatával:

Dim custDataSet As New DataSet()  
  
custAdapter.FillSchema(custDataSet, SchemaType.Source, "Customers")  
custAdapter.Fill(custDataSet, "Customers")  
var custDataSet = new DataSet();  
  
custAdapter.FillSchema(custDataSet, SchemaType.Source, "Customers");  
custAdapter.Fill(custDataSet, "Customers");  

Az alábbi példakód bemutatja, hogyan adhat hozzá sémaadatokat egy DataSethez a Fill metódus MissingSchemaAction.AddWithKey tulajdonságával:

Dim custDataSet As New DataSet()  
  
custAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey  
custAdapter.Fill(custDataSet, "Customers")  
var custDataSet = new DataSet();  
  
custAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;  
custAdapter.Fill(custDataSet, "Customers");  

Több eredményhalmaz kezelése

Ha a DataAdapter több, a SelectCommand által visszaadott eredménykészlettel találkozik, akkor több táblát hoz létre az Adatkészletben. A táblák az N tábla nulla alapú növekményes alapértelmezett nevét kapják meg, a "Table0" helyett a Table (Táblázat) nevet. Ha a rendszer argumentumként ad át egy táblanevet a FillSchema metódusnak, a táblanév N táblanév nulla alapú növekményes neve lesz, amely a TableName0 helyett a TableName0 névvel kezdődik.

Feljegyzés

Ha az OleDbDataAdapter objektum FillSchema metódusa olyan parancsra van meghívva, amely több eredményhalmazt ad vissza, csak az első eredményhalmaz sémaadatai lesznek visszaadva. Ha több eredményhalmaz sémaadatait adja vissza az OleDbDataAdapter használatával, javasoljuk, hogy adja meg az AddWithKey MissingSchemaAction elemét, és kérje le a sémaadatokat a Fill metódus meghívásakor.

Lásd még