powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
25 сообщений из 41, страница 1 из 2
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35061200
b0ris98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://msdn2.microsoft.com/en-us/library/4esb49b4.aspx
Здравствуйте!
Мне потребовалось одновременно добавлять данные в главную таблицу и тут же с этим же первичным ключом ключем в подчиненную . Как обычно в этой ситуации требуется знать первичный ключ вновь добавленной записи. Мне на глаза попался сабжевый пример в мсдн.
Вроде все очень круто, как казалось. Пишем и туда и туда, потом апдейт, апдейт и все ....
Блин... но этот пример не работает, гад! Вернее как-то работает, но ....не всегда корректно. Постоянно ошибки на ограничения выскакивают. Начал с ограничениями колдовать: стали ошибки при апдейте на сервер возникать... Может есть народ, который разобрался? Или как решить эту задачу средствами ADO.NET: одновременное добавление данных в главную и зависящую от первичного ключа этой новой записи подчиненную таблицу?
Без scope_identity в хранимой процедуре никак не обойтись?
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35061487
ova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b0ris98http://msdn2.microsoft.com/en-us/library/4esb49b4.aspx
Здравствуйте!
Мне потребовалось одновременно добавлять данные в главную таблицу и тут же с этим же первичным ключом ключем в подчиненную . Как обычно в этой ситуации требуется знать первичный ключ вновь добавленной записи. Мне на глаза попался сабжевый пример в мсдн.
Вроде все очень круто, как казалось. Пишем и туда и туда, потом апдейт, апдейт и все ....
Блин... но этот пример не работает, гад! Вернее как-то работает, но ....не всегда корректно. Постоянно ошибки на ограничения выскакивают. Начал с ограничениями колдовать: стали ошибки при апдейте на сервер возникать... Может есть народ, который разобрался? Или как решить эту задачу средствами ADO.NET: одновременное добавление данных в главную и зависящую от первичного ключа этой новой записи подчиненную таблицу?
Без scope_identity в хранимой процедуре никак не обойтись?

Я вот кстати рядом про то же пишу, если в программе задать связь между таблицами в виде внешнего ключа, то при открытии почему-то ошибки вываливаются, на данный момент я просто отключил этот ключ. Делаю так - делаю апдейт на главную таблицу, получаю ключ, вручную присваиваю ключ в подчиненной таблице, сохораняю подчиненную - на самом деле не сильно много кода добавилось.
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35061576
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b0ris98http://msdn2.microsoft.com/en-us/library/4esb49b4.aspx
Здравствуйте!
Мне потребовалось одновременно добавлять данные в главную таблицу и тут же с этим же первичным ключом ключем в подчиненную . Как обычно в этой ситуации требуется знать первичный ключ вновь добавленной записи. Мне на глаза попался сабжевый пример в мсдн.
Вроде все очень круто, как казалось. Пишем и туда и туда, потом апдейт, апдейт и все ....
Блин... но этот пример не работает, гад! Вернее как-то работает, но ....не всегда корректно. Постоянно ошибки на ограничения выскакивают. Начал с ограничениями колдовать: стали ошибки при апдейте на сервер возникать... Может есть народ, который разобрался? Или как решить эту задачу средствами ADO.NET: одновременное добавление данных в главную и зависящую от первичного ключа этой новой записи подчиненную таблицу?
Без scope_identity в хранимой процедуре никак не обойтись?
Всё проще - вы забыли отредактировать связи. Надо установить в Cuscade Update. Всё это побробно расписано в книжке
Data Binding with Windows Forms 2.0: Programming Smart Client Data Applications with .NET
By Brian Noyes
Если пользуетесь VS 2008 то там TableAdapterManager всё за вас сделает
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35061584
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ova
Я вот кстати рядом про то же пишу, если в программе задать связь между таблицами в виде внешнего ключа, то при открытии почему-то ошибки вываливаются, на данный момент я просто отключил этот ключ. Делаю так - делаю апдейт на главную таблицу, получаю ключ, вручную присваиваю ключ в подчиненной таблице, сохораняю подчиненную - на самом деле не сильно много кода добавилось.
Ключ отключать не надо! надо на время отключить bindingsource

Код: plaintext
BindingSource.RaiseListChangedEvents = false;

а потом включить
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35061828
ova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill Great
Ключ отключать не надо! надо на время отключить bindingsource

Код: plaintext
BindingSource.RaiseListChangedEvents = false;

а потом включить
Ну во-первых тут тоже чего-то неправильно, если я вижу что записи возвращаются именно те что соответствуют ключу, то это тогда глюк
А во-вторых - когда их включать? Я включаю сразу после Fill - на строке включения ограничения вываливается ошибка- именно про это ограничение.
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35061942
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ova Bill Great
Ключ отключать не надо! надо на время отключить bindingsource

Код: plaintext
BindingSource.RaiseListChangedEvents = false;

а потом включить
Ну во-первых тут тоже чего-то неправильно, если я вижу что записи возвращаются именно те что соответствуют ключу, то это тогда глюк
А во-вторых - когда их включать? Я включаю сразу после Fill - на строке включения ограничения вываливается ошибка- именно про это ограничение.
Распространённая ошибка - ваш Fill возвращает несколько одинаковых строк с одним и тем же значением первичного ключа. Типизированный датасет, коли вы ему сказали что в данной таблице есть первичный ключ это контролирует. Контроль можно выключить у DataSet есть EnforceConstraints для on/ off тех ограничений, которые вы же и "попросили" соблюдать.
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35062021
ova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill Great
Распространённая ошибка - ваш Fill возвращает несколько одинаковых строк с одним и тем же значением первичного ключа. Типизированный датасет, коли вы ему сказали что в данной таблице есть первичный ключ это контролирует. Контроль можно выключить у DataSet есть EnforceConstraints для on/ off тех ограничений, которые вы же и "попросили" соблюдать.
Что значит ошибка- чья? Я ему даю Fill - он должен выбрать таблицу как она есть, более того - пробовал сделать запрос на подчиненную таблицу с параметром, т.е. выбираю только нужные записи, заполняю по FillBy - тот же результат
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35062042
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ova
Что значит ошибка- чья? Я ему даю Fill - он должен выбрать таблицу как она есть, более того - пробовал сделать запрос на подчиненную таблицу с параметром, т.е. выбираю только нужные записи, заполняю по FillBy - тот же результат
Выпишите ошибку, которая возникает у вас!
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35062431
b0ris98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bill Great b0ris98http://msdn2.microsoft.com/en-us/library/4esb49b4.aspx
Здравствуйте!
Мне потребовалось одновременно добавлять данные в главную таблицу и тут же с этим же первичным ключом ключем в подчиненную . Как обычно в этой ситуации требуется знать первичный ключ вновь добавленной записи. Мне на глаза попался сабжевый пример в мсдн.
Вроде все очень круто, как казалось. Пишем и туда и туда, потом апдейт, апдейт и все ....
Блин... но этот пример не работает, гад! Вернее как-то работает, но ....не всегда корректно. Постоянно ошибки на ограничения выскакивают. Начал с ограничениями колдовать: стали ошибки при апдейте на сервер возникать... Может есть народ, который разобрался? Или как решить эту задачу средствами ADO.NET: одновременное добавление данных в главную и зависящую от первичного ключа этой новой записи подчиненную таблицу?
Без scope_identity в хранимой процедуре никак не обойтись?
Всё проще - вы забыли отредактировать связи. Надо установить в Cuscade Update. Всё это побробно расписано в книжке
Data Binding with Windows Forms 2.0: Programming Smart Client Data Applications with .NET
By Brian Noyes
Если пользуетесь VS 2008 то там TableAdapterManager всё за вас сделает
Люди! Не дайте дураком помереть! Киньте рабочий проект или статью из книжки, а то пример из МСДН от 2005 кстати и в 2008 версию перекочевал без изменений (специально в И-нете проверял). А в нем нормально все работает, только если изменять существующие записи. А при добавлении/удалении косяки выскакивают! Например, на сервере добавляется запись только в главную таблицу, а в подчиненной - пусто, хотя при этом в датасете связи по ключам работают и данные есть и в главной, и подчиненной (FK_ID=PK_ID). Я использую VS2005.
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35062560
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возьми, книгу сию

Data Binding with Windows Forms 2.0: Programming Smart Client Data Applications with .NET
By Brian Noyes

Всё это побробно расписано и дураком не помрёшь!
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35063513
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b0ris98
....
А при добавлении/удалении косяки выскакивают! Например, на сервере добавляется запись только в главную таблицу, а в подчиненной - пусто, хотя при этом в датасете связи по ключам работают и данные есть и в главной, и подчиненной (FK_ID=PK_ID). Я использую VS2005.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
       public void saveDS()
        {
            gridControl1.FocusedView.CloseEditor();
            gridControl2.FocusedView.CloseEditor();
            gridControl3.FocusedView.CloseEditor();
            if (this.DS1.HasChanges())
            {
                // Удаление
                this.поставкаTA.Update(this.DS1.Поставки_ЗТ.Select("", "", DataViewRowState.Deleted));
                this.детали_СчетаTA.Update(this.DS1.Детали_счета_ЗТ.Select("", "", DataViewRowState.Deleted));
                this.счетTA.Update(this.DS1.Счет_ЗТ.Select("", "", DataViewRowState.Deleted));
                this.поставщик_БанкTA.Update(this.DS1.Поставщик_Банк.Select("", "", DataViewRowState.Deleted));
                this.поставщикTA.Update(this.DS1.Поставщик.Select("", "", DataViewRowState.Deleted));
                this.размерыTA.Update(this.DS1.Размеры.Select("", "", DataViewRowState.Deleted));
                this.валютыTA.Update(this.DS1.Валюты.Select("", "", DataViewRowState.Deleted));
                // Изменения
                this.валютыTA.Update(this.DS1.Валюты.Select("", "", DataViewRowState.ModifiedCurrent));
                this.размерыTA.Update(this.DS1.Размеры.Select("", "", DataViewRowState.ModifiedCurrent));
                this.поставщикTA.Update(this.DS1.Поставщик.Select("", "", DataViewRowState.ModifiedCurrent));
                this.поставщик_БанкTA.Update(this.DS1.Поставщик_Банк.Select("", "", DataViewRowState.ModifiedCurrent));
                this.счетTA.Update(this.DS1.Счет_ЗТ.Select("", "", DataViewRowState.ModifiedCurrent));
                this.детали_СчетаTA.Update(this.DS1.Детали_счета_ЗТ.Select("", "", DataViewRowState.ModifiedCurrent));
                this.поставкаTA.Update(this.DS1.Поставки_ЗТ.Select("", "", DataViewRowState.ModifiedCurrent));
                // Добавления
                this.валютыTA.Update(this.DS1.Валюты.Select("", "", DataViewRowState.Added));
                this.размерыTA.Update(this.DS1.Размеры.Select("", "", DataViewRowState.Added));
                this.поставщикTA.Update(this.DS1.Поставщик.Select("", "", DataViewRowState.Added));
                this.поставщик_БанкTA.Update(this.DS1.Поставщик_Банк.Select("", "", DataViewRowState.Added));
                this.счетTA.Update(this.DS1.Счет_ЗТ.Select("", "", DataViewRowState.Added));
                this.детали_СчетаTA.Update(this.DS1.Детали_счета_ЗТ.Select("", "", DataViewRowState.Added));
                this.поставкаTA.Update(this.DS1.Поставки_ЗТ.Select("", "", DataViewRowState.Added));
            }
        }
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35063879
b0ris98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bill GreatВозьми, книгу сию

Data Binding with Windows Forms 2.0: Programming Smart Client Data Applications with .NET
By Brian Noyes

Всё это побробно расписано и дураком не помрёшь!
Скачал я эту книгу в chm формате. Там нашел Master-Details Data Binding, но просто для отображения данных, Updating Data Sources Through Data Binding - но там пример для одной таблицы... Чего-то про Saving Data to a Database Multiple Tables не нахожу :-(
Ткните хоть в Chapter...
Может есть кто-нибудь, кто пример из МСДН до ума довел?
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35063893
b0ris98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сахават Юсифов b0ris98
....
А при добавлении/удалении косяки выскакивают! Например, на сервере добавляется запись только в главную таблицу, а в подчиненной - пусто, хотя при этом в датасете связи по ключам работают и данные есть и в главной, и подчиненной (FK_ID=PK_ID). Я использую VS2005.

Код: plaintext
1.
2.
3.
       public void saveDS()
...
        {
          }

Я извиняюсь... А можно из всего многообразия оставить в примере только две таблицы master-details.... Что бы было видно в каком порядке какие обновлять нужно...
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35064035
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b0ris98Я извиняюсь... А можно из всего многообразия оставить в примере только две таблицы master-details.... Что бы было видно в каком порядке какие обновлять нужно...

Там несколько пар.
смотрите например на эту пару

Код: plaintext
1.
this.детали_СчетаTA.Update(this.DS1.Детали_счета_ЗТ.Select("", "", DataViewRowState.Deleted));
                this.счетTA.Update(this.DS1.Счет_ЗТ.Select("", "", DataViewRowState.Deleted));
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35064375
b0ris98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сахават Юсифов b0ris98Я извиняюсь... А можно из всего многообразия оставить в примере только две таблицы master-details.... Что бы было видно в каком порядке какие обновлять нужно...

Там несколько пар.
смотрите например на эту пару

Код: plaintext
1.
this.детали_СчетаTA.Update(this.DS1.Детали_счета_ЗТ.Select("", "", DataViewRowState.Deleted));
                this.счетTA.Update(this.DS1.Счет_ЗТ.Select("", "", DataViewRowState.Deleted));

А в дизайнере датасета если два раза на связь мышкой щелнуть, то там что в окошке Relation стоит? Relation Only, Foreign Key Constraint, или Both Relation And Foreign Key Constraint.
Ну, и соотвественно update/delete rules.
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35064577
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b0ris98Both Relation And Foreign Key Constraint.
Ну, и соотвественно update/delete rules.
Both, NoAction. :)
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35070213
b0ris98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые коллеги!
Попробую, так сказать, еще раз описать проблему. На тривиальном хрестоматийном примере страны-континенты. На SQL серевере есть БД World, состоящая из двух таблиц: Continents (два поля ContinentID - int, identity и ContinentName - varchar(50)) и Countries (три поля CountrieID - int, identity, CountrieName - varchar(50) и ContinentID - int). Таблицы связаны отношением один-ко-многим. Есть FK_Countries_Continents, по полю ContinentID обеих таблиц.

В проекте создан типизированный датасет с именем WorldDataSet. В дизайнере датасета между DataTable'ами Continents и Countries есть Relation FK_Countries_Continents. По-умолчанию связь имела свойство "Relation Only", которое было вручную установлено в "Both Relation And Foreign Key Constraint". Update Rule - Cascade, Delete rule - Cascade, Accept/Reject Rule - None, флажок Nested Relation не установлен.
Не будем касаться операций изменений и удаления, остановимся только на добавлении.

На форме есть WorldDataSet1, CountriesTableAdapter, ContinentsTableAdapter, ContinentsBindingSource, CountriesBindingSource. У ContinentsBindingSource установлены свойства DataSource - WorldDataSet1, DataMember - Continents. У CountriesBindingSource установлены свойства DataSource - ContinentsBindingSource, DataMember - FK_Countries_Continents.

Требуется, чтобы при нажатии на кнопочку Button1 в таблицу Continents добавилась "Европа", а в таблицу Countries - "Германия". В обработчике события Button1.Click написан следующий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
   
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim mr As WorldDataSet.ContinentsRow
        Dim dr As WorldDataSet.CountriesRow
        Dim r As System.Data.DataRowView

        r = CType(ContinentsBindingSource.AddNew(), System.Data.DataRowView)
        mr = CType(r.Row, WorldDataSet.ContinentsRow)

        r = CType(CountriesBindingSource.AddNew(), System.Data.DataRowView)
        dr = CType(r.Row, WorldDataSet.CountriesRow)

        mr.ContinentName = "Европа"
        dr.CountrieName = "Германия"

        ContinentsBindingSource.EndEdit()
        CountriesBindingSource.EndEdit()

        ContinentsTableAdapter.Update(WorldDataSet1.Continents)
        CountriesTableAdapter.Update(WorldDataSet1.Countries)

    End Sub
При этом добавляется запись только в мастер-таблицу Continents. В Countries не добавляется ничего. Ошибок никаких не возникает. Что здесь не правильно?
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35074199
b0ris98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
b0ris98
При этом добавляется запись только в мастер-таблицу Continents. В Countries не добавляется ничего. Ошибок никаких не возникает. Что здесь не правильно?
После долгих экспериментов все получилось, если делать в следующем порядке:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim mr As WorldDataSet.ContinentsRow
        Dim dr As WorldDataSet.CountriesRow
        Dim r As System.Data.DataRowView

        r = CType(ContinentsBindingSource.AddNew(), System.Data.DataRowView)
        mr = CType(r.Row, WorldDataSet.ContinentsRow)
        mr.ContinentName = "Европа"
        ContinentsBindingSource.EndEdit()
        ContinentsTableAdapter.Update(WorldDataSet1.Continents)

        r = CType(CountriesBindingSource.AddNew(), System.Data.DataRowView)
        dr = CType(r.Row, WorldDataSet.CountriesRow)
        dr.CountrieName = "Германия"
        CountriesBindingSource.EndEdit()
        CountriesTableAdapter.Update(WorldDataSet1.Countries)

    End Sub


Т.е. получается, что для мастер-таблицы нужно сделать EndEdit, затем Update, чтобы она первичный ключ обновила , а затем уже сделать AddNew для подчиненной записи...
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35080449
TeXpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как быть в случае нетипизированного DataSet?
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35086779
b0ris98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TeXpertА как быть в случае нетипизированного DataSet?
Аналогично, я думаю...
Там просто нужно правильно запрос на добавление/изменение в тейбладаптере прописать.
В моем примере, например в таблице Continents запрсы так выглядят:

INSERT INTO [dbo].[Continents] ([ContinentName]) VALUES (@ContinentName);
SELECT ContinentID, ContinentName FROM Continents WHERE (ContinentID = SCOPE_IDENTITY())

Вот оно! SCOPE_IDENTITY - то где спряталась ;-)

UPDATE [dbo].[Continents] SET [ContinentName] = @ContinentName WHERE (([ContinentID] = @Original_ContinentID) AND ([ContinentName] = @Original_ContinentName));
SELECT ContinentID, ContinentName FROM Continents WHERE (ContinentID = @ContinentID)


Вопрос вот в чем еще. Если сделать одновременно AddNew для биндингсоурсов обеих таблиц (сначала для главной, затем для подчиненной, без вызова EndEdit для главной), то похоже, что внешний ключ в подчиненной не обновляется и корректно ничего не работает. Вот если в моем работающем примере посмотреть, то AddNew для подчиненной таблицы выполняется ПОСЛЕ того, как выполнен EndEdit главной ...
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35087468
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как у вас все сложно с вашими датасетами...
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35087489
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если оставаться с датасетами то удобное теперь средства tableAdapterManager
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35087663
b0ris98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bill GreatЕсли оставаться с датасетами
А есть другие альтернативы, использовать ADO.NET и без датасетов?
Я что-то пропустил?
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35087673
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ORM
Linq, например
...
Рейтинг: 0 / 0
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
    #35087739
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот если говорить простым языком из книги

Submitting Hierarchical Changes

Using the DataTable Object’s Select Method to Submit Hierarchical Changes

In Chapter 7, I discussed the Select method of the DataTable object as a way to locate DataRow objects that satisfy the desired criteria. For example, the following line of code returns an array of the pending new DataRow objects whose City column contains Seattle. The DataRow objects are sorted based on the value of the ContactName column.

tbl.Select("City = 'Seattle'", "ContactName", DataViewRowState.Added)
The Select method returns an array of DataRow objects. And one of the overloaded DataAdapter Update methods accepts an array of DataRow objects. What a pleasant coincidence.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Dim ds As DataSet = CreateDataSet()
Dim tblCustomers As DataTable = ds.Tables("Customers")
Dim tblOrders As DataTable = ds.Tables("Orders")
Dim daCustomers As OleDbDataAdapter = CreateCustomersAdapter()
Dim daOrders As OleDbDataAdapter = CreateOrdersAdapter()

FillDataSetAndModifyItsContents(ds)

'Submit the new customers and then the new orders.
daCustomers.Update(tblCustomers.Select("", "", DataViewRowState.Added))
daOrders.Update(tblOrders.Select("", "", DataViewRowState.Added))

'Submit the modified customers and then the modified orders.
daCustomers.Update(tblCustomers.Select("", "", _
                                       DataViewRowState.ModifiedCurrent))
daOrders.Update(tblOrders.Select("", "", DataViewRowState.ModifiedCurrent))

'Submit the deleted orders and then the deleted customers.
daOrders.Update(tblOrders.Select("", "", DataViewRowState.Deleted))
daCustomers.Update(tblCustomers.Select("", "", DataViewRowState.Deleted))
If you use the Select method to submit modified rows, the changes returned by the DataAdapter will be applied to your main DataTable because the Select method returns an array of DataRow objects. The DataRow objects in the array are actually pointers to the DataRow objects in the DataTable. Changes you make to the contents of the array will be visible in the main DataTable.


ну вот . еще там есть как апдейтить через datarelations объект.там тоже просто.
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]