Előállítása értékek vagy azonosítók automatikus tételszámozástól

Az elsődleges kulcs egy relációs adatbázis egy oszlop vagy kombinációja oszlopok mindig tartalmaznak egyedi értékeket. Ha az elsődleges kulcs értéke ismert, lehetséges, hogy megtalálja a húr, amely tartalmazza az érték. RDBMS, mint például az SQL Server, az Oracle és a Microsoft Access / Jet, létrehozásának támogatása oszlopok automatikusan növekvő értékeket is kijelölhető elsődleges kulcsokat. Ezek az értékek jönnek létre, mint a szerver, hogy adjunk a táblázat sorai a. Az SQL Server identitás oszlopokhoz tulajdont hoz létre az Oracle-szekvenciát, és a Microsoft Access létrehozza Számláló oszlopban.

A formáció automatikusan növekvő értékek is használhatja a DataColumn objektumot. hozzárendelésével AutoIncrement tulajdonságot true értékre. De ez ahhoz vezethet, hogy az ismétlődő értékeket bizonyos esetekben DataTable. ha több kliens alkalmazások egymástól függetlenül automatikusan generálja növeli az értéket. Alkalmazás szerver generál automatikusan növekvő értékek kiküszöböli az esetleges konfliktusokat, hiszen minden felhasználó kaphat az értékekhez, amelyeket a szerver minden beszúrt sor.

A frissítés során módszer hívás DataAdapter objektum adatbázis adatokat küldhet vissza az alkalmazásnak ADO.NET kimeneti paramétereket, vagy mint az első bejegyzés a visszaadott eredményhalmaz a SELECT utasítást, végre ugyanazt a csomagot, mint az utasításokat INSERT. ADO.NET környezet lehetővé teszi, így ezeket az értékeket, és frissítse a megfelelő oszlopok a DataRow objektum frissül.

Egyes adatbázisok, mint például a Microsoft Access Jet, nem támogatják a kimeneti paramétereket, és nem tudja kezelni a több utasítást egyetlen csomagban. Munkavégzés a lényege a Jet adatbázis, az új érték Számláló, létre a beillesztett sor, akkor kap csinál egy SELECT az eseménykezelő RowUpdated DataAdapter objektumot.

Egy alternatív megközelítés tekintetében használatával automatikusan növeli az értékét a módszert alkalmazni NewGuid Guid objektumot alkotnak GUID azonosító (globálisan egyedi azonosító) a kliens számítógépre lehet másolni a szerverre behelyezésekor minden új sor. NewGuid módszer generál egy 16 bájtos bináris érték egy algoritmus, amely nagy valószínűséggel az egyik kapott értékeket nem kell megismételni. Az SQL Server GUID a tárolt adatok a UniqueIdentifier oszlopban. amelyek automatikusan létrehozott SQL Server használatával NEWID ()-SQL nyelv jellemzői. Segítségével GUID azonosítót az elsődleges kulcsot vezethet teljesítménycsökkenést. SQL Server támogatja NEWSEQUENTIALID () függvényt. létrehozására egymást követő értékeinek GUID azonosítója, globális egyedi ami nem garantált, de lehet hatékonyabban indexelt.

Gyakran előfordul, hogy hívja a módszer az objektum GetChanges DataTable másolat létrehozása, amely csak a módosított sorokat, majd az új példányt használunk, ha hívja az Update DataAdapter objektumot. Ez különösen akkor hasznos, ha azt szeretné, hogy a csomagolás és vigyük át a megváltozott sorok egyetlen komponens, amely végrehajtja a frissítést. Frissítését követően a másolat tartalmazhat egy új azonosítót az értékeket, amelyeket azután át kell vissza az eredeti DataTable fúzió. Sőt, az új identitás értékek valószínűleg eltér az eredeti értékeket a DataTable. Ahhoz, hogy végre ez a fúzió, meg kell tartani az eredeti értékeket AutoIncrement oszlopok a másolatot, hogy képes legyen megtalálni és frissítse a meglévő sor az DataTable eredeti. ahelyett, hogy egy új sor tartalmazza az új identitás értékek. Alapértelmezésben azonban ezek a kezdeti értékek elvesznek hívása után frissítése DataAdapter objektumot. mivel minden egyes naprakésszé sorban DataRow AcceptChanges hallgatólagosan hivatkozott módszer.

Kétféleképpen hogy megtartja az eredeti DataColumn értékeket a DataRow objektum a frissítés során DataAdapter.

Az első módszer, hogy megőrizzék az eredeti értékek rendelni ingatlan értékének AcceptChangesDuringUpdate a DataAdapter hamis. Ez érinti az egyes DataRow objektumot az objektum frissítve DataTable. További információ és a minta kódot, lásd. In AcceptChangesDuringUpdate listájában.

A második módszer használatával jár a eseménykezelő RowUpdated DataAdapter tárgykód, hogy a Status tulajdonság beállítása SkipCurrentRow. DataRow érték frissül, de a kezdeti érték az egyes objektumok tárolják DataColumn. Ez a módszer lehetővé teszi, hogy fenntartsák az eredeti értékeit néhány sorban, de nem mások. Például a kódot adhatunk megőrizni az eredeti értékeket a vonalak, nem módosíthatja vagy törölheti sorokban az érték ellenőrzése StatementType követett célhoz kötött ingatlan értékének állapota SkipCurrentRow csak a sorok az ingatlan StatementType egyenlő beszúrása.

Ha ezek közül bármelyik módszert használják, hogy fenntartsák az eredeti értékeket a DataRow objektum a frissítés során DataAdapter. mellékletében ADO.NET sorozat által végrehajtott műveleteket felváltja a jelenlegi értékek DataRow új értékek iránt, mint a kimeneti paraméterek alapján, vagy által visszaadott az első sorban, megtartva az eredeti érték minden DataColumn. Először az úgynevezett AcceptChanges DataRow objektumfüggvényt menteni az aktuális értékeket, mint az eredeti értékeket, majd rendelt új értékeket. Ezután DataRows tárgyakat. akinek tulajdonság megegyezik RowState hozzá. RowState az ingatlan értékét helyébe módosított. ez nem felel meg az elvárásoknak.

Adagolási csapat eredménye mindegyik DataRow objektum frissül határozza meg az egyes ingatlanok UpdatedRowSource DbCommand csapat. Ez a tulajdonság be van állítva, hogy az egyik érték a felsorolás UpdateRowSource.

Az alábbi táblázat egy leírás arról, hogy a felsorolás érték UpdateRowSource befolyásolják az ingatlan RowState módosított sorok.

Ez a rész egy mintát, amely bemutatja, hogy a számláló értéke a Jet 4.0 tárol. A Jet adatbázis-motor nem támogatja a végrehajtását több utasítást a csomagban vagy használatát a kimeneti paraméterek, így használja a fent leírt módszereket, hogy visszatérjen az új értéket a számláló. hozzárendelve a behelyezett sor, akkor nem. Azonban RowUpdated eseménykezelő, akkor adjuk meg a kódot, azaz egy külön nyilatkozatot SELECT @@ azonosságot kap az új értéket a számláló.

Ahelyett, hogy a séma információ felhasználásával MissingSchemaAction.AddWithKey e példa konfiguráció DataTable beállítjuk a megfelelő áramkört, mielőtt hívja kitöltési OleDbDataAdapter DataTable. Ebben az esetben kategóriaazonosító oszlopban van beállítva, hogy csökkentse az értéket az egyes behelyezett sor, nullától kezdve beállításával az ingatlan értékét AutoIncrement igaz. AutoIncrementSeed ingatlan értékének 0 és -1 értékeket AutoIncrementStep tulajdonság. Ezt követően a két új sort, és okozott GetChanges adagolási módszer a megváltozott sorok az új objektum DataTable. amelyet ezután az eljárás frissítése.