ПредишенСледващото

Първичният ключ в релационна база данни е колона или комбинация от колони, които винаги съдържат уникални стойности. Ако първичен ключ стойност е известно, че е възможно да се намери низ, който съдържа стойността. RDBMS като SQL Server, Oracle и Microsoft Access / Jet, да подкрепи създаването на колони автоматичното повишаване ценности, които могат да бъдат определени като първични ключове. Тези стойности са получени в сървъра, за да добавите редове в таблицата. В SQL колони самоличност сървър определен имот е създаден през Oracle последователност последователност, а в Microsoft Access създава AutoNumber колона.

За формирането на автоматично нараства показателят също да използвате DataColumn обекта. да я задавате AutoIncrement собственост, за да е истина. Но това може да доведе до дублиране на стойности в някои случаи DataTable. ако няколко клиентски приложения са независимо генерира автоматично увеличава стойността. Приложен сървър за генериране на автоматично нараства показателят елиминира потенциални конфликти, тъй като всеки потребител може да получи стойностите, генерирани от сървъра към всяка поставена ред.

По време на метод Актуализация на повикване DataAdapter базата данни на обект може да изпраща данни обратно към ADO.NET за кандидатстване като изходни параметри или като първи запис в набора резултат върнат от SELECT инструкция, изпълнен в една и съща опаковка като вмъкнете инструкции. ADO.NET среда позволява да се получат тези ценности, и да се актуализират съответните колони на обекта DataRow се актуализира.

Някои бази данни, като например Microsoft Access Jet, не поддържат изходните параметри и не могат да се справят множество инструкции в един пакет. Работа с ядрото на базата данни на Jet, новият AutoNumber стойност, създадена за вмъкнат ред, можете да получите, като направите една единствена SELECT изявление в събитието манипулатор RowUpdated DataAdapter обект.

Един алтернативен подход по отношение на използването на автоматично увеличаване на стойността на метода е да се прилага NewGuid GUID обект, за да се образува идентификатор GUID (глобално уникален идентификатор) на клиентския компютър, който може да бъде копиран в сървъра, когато поставяте всеки нов ред. NewGuid метод генерира 16-байт двоична стойност с алгоритъм, който осигурява висока вероятност, че нито един от получените стойности няма да се повтори. В GUID на SQL Server на данните, съхранявани в колоната uniqueidentifier. която може да бъде създадена автоматично в SQL Server, като използвате NEWID () Transact-SQL особености на езика. Използването идентификатор GUID като основен ключ може да доведе до спад в производителността. SQL Server осигурява поддръжка NEWSEQUENTIALID (функция). създаване на следващ идентификатор ценности GUID, глобален уникален, която не е гарантирана, но които могат да бъдат по-ефективно индексирани.

Често срещан сценарий е да се обадите на метод на GetChanges на обекта DataTable да създаде копие, което съдържа само променените редове, а след това новото копие се използва, когато се обадите на обновяване DataAdapter обекта. Това е особено полезно, ако искате да се опаковат и пренесат променените редове за един компонент, който се извършва на актуализацията. След актуализиране на копие може да съдържа нови стойности за самоличност, които след това трябва да се прехвърлят обратно към първоначалния DataTable сливане. Освен това, новите стойности за самоличност могат да бъдат различни от оригиналните стойности в DataTable. За да може да изпълнява тази сливане, че е необходимо да се запазят първоначалните стойности на AutoIncrement колони в копието, за да може да се намери и да актуализира съществуващия ред в DataTable оригинала. вместо да се добави нов ред, съдържащ новите стойности за самоличност. По подразбиране, обаче, тези начални стойности се губят след извикването Актуализация DataAdapter обект. тъй като всеки се обновява ред DataRow AcceptChanges имплицитно извиква метод.

Има два начина да се запазват първоначалните стойности DataColumn в обекта DataRow по време на DataAdapter за актуализиране.

Първият начин да се запази първоначалните стойности е да се възложи на стойността на имотите AcceptChangesDuringUpdate на DataAdapter невярно. Тя засяга всеки DataRow обект в обекта, който се актуализира DataTable. За повече информация и примерен код, вижте. В раздел AcceptChangesDuringUpdate.

Вторият метод включва използването на събитие манипулатор RowUpdated DataAdapter обект кода, че имотът Статус е настроен да SkipCurrentRow. DataRow стойност се актуализира, но първоначалната стойност на всеки обект се съхранява DataColumn. Този метод дава възможност да се запазят първоначалните стойности на някои редове, а други не. Например, може да се добави кода, за да се запази първоначалните стойности на линии, не се променя или изтрива редове чрез проверка StatementType на стойност, следвана назначен стойността на имотите Статус SkipCurrentRow само за редовете с имот StatementType равен Поставете.

Ако някой от тези методи се използват за поддържане на първоначалните стойности на обекта DataRow по време на DataAdapter за актуализиране. в приложение ADO.NET поредица от действия, извършени чрез замяна на текущите стойности DataRow нови стойности, върнати като изходни параметри или като комплект с резултатите върнати от първия ред, като запазва първоначалната стойност във всяка DataColumn. Първо нарича AcceptChanges DataRow метод обект, за да запазите текущите стойности, както оригиналните стойности и след това назначени новите стойности. След това DataRows обекти. чиято собственост е равно RowState Добавено. RowState стойност на това имущество се заменя с модифициран. тя не може да отговори на очакванията.

Дозаторни отборен резултат за всеки обект DataRow се актуализират се определя от всеки имот екип UpdatedRowSource DbCommand. Този имот е настроено на една от стойностите на UpdateRowSource на изброяване.

В следващата таблица е описание на това как стойността на изброяване UpdateRowSource засегне RowState имотния обновяват редове.

Този раздел предоставя проба, показваща как да се получи стойността Autonumber на 4.0 базата данни Jet. Двигателят на Jet база данни не поддържа изпълнение на множество инструкции в опаковката или използването на изходните параметри, така че използвайте някой от методите, описани по-горе, за да се върнете на новата стойност на Autonumber. възлага на вмъкнат ред, не можете. Въпреки RowUpdated боравене със събития, можете да въведете кода, който работи отделно изявление SELECT @@ ИДЕНТИЧНОСТ да получите най-новата стойност на Autonumber.

Вместо да добавяте информация за схема с помощта MissingSchemaAction.AddWithKey в този пример конфигурация DataTable регулира с помощта на правилното верига преди да се обадите за попълване OleDbDataAdapter DataTable. В този случай CategoryId колона е настроен да се намали стойността на всеки добавя ред, започвайки от нула, чрез определяне AutoIncrement на стойността на имота вярно. AutoIncrementSeed собственост стойности 0 и -1 стойности AutoIncrementStep собственост. След това, добавянето на две нови редове и причинени метод GetChanges за добавяне на променените редове в нов обект DataTable. който се предава на метода Update.

Подкрепете проекта - споделете линка, благодаря!