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

Я вот кстати рядом про то же пишу, если в программе задать связь между таблицами в виде внешнего ключа, то при открытии почему-то ошибки вываливаются, на данный момент я просто отключил этот ключ. Делаю так - делаю апдейт на главную таблицу, получаю ключ, вручную присваиваю ключ в подчиненной таблице, сохораняю подчиненную - на самом деле не сильно много кода добавилось.
...
Рейтинг: 0 / 0
15.01.2008, 09:55
    #35061576
Bill Great
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
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
15.01.2008, 09:57
    #35061584
Bill Great
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
ova
Я вот кстати рядом про то же пишу, если в программе задать связь между таблицами в виде внешнего ключа, то при открытии почему-то ошибки вываливаются, на данный момент я просто отключил этот ключ. Делаю так - делаю апдейт на главную таблицу, получаю ключ, вручную присваиваю ключ в подчиненной таблице, сохораняю подчиненную - на самом деле не сильно много кода добавилось.
Ключ отключать не надо! надо на время отключить bindingsource

Код: plaintext
BindingSource.RaiseListChangedEvents = false;

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

Код: plaintext
BindingSource.RaiseListChangedEvents = false;

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

Код: plaintext
BindingSource.RaiseListChangedEvents = false;

а потом включить
Ну во-первых тут тоже чего-то неправильно, если я вижу что записи возвращаются именно те что соответствуют ключу, то это тогда глюк
А во-вторых - когда их включать? Я включаю сразу после Fill - на строке включения ограничения вываливается ошибка- именно про это ограничение.
Распространённая ошибка - ваш Fill возвращает несколько одинаковых строк с одним и тем же значением первичного ключа. Типизированный датасет, коли вы ему сказали что в данной таблице есть первичный ключ это контролирует. Контроль можно выключить у DataSet есть EnforceConstraints для on/ off тех ограничений, которые вы же и "попросили" соблюдать.
...
Рейтинг: 0 / 0
15.01.2008, 11:43
    #35062021
ova
ova
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
Bill Great
Распространённая ошибка - ваш Fill возвращает несколько одинаковых строк с одним и тем же значением первичного ключа. Типизированный датасет, коли вы ему сказали что в данной таблице есть первичный ключ это контролирует. Контроль можно выключить у DataSet есть EnforceConstraints для on/ off тех ограничений, которые вы же и "попросили" соблюдать.
Что значит ошибка- чья? Я ему даю Fill - он должен выбрать таблицу как она есть, более того - пробовал сделать запрос на подчиненную таблицу с параметром, т.е. выбираю только нужные записи, заполняю по FillBy - тот же результат
...
Рейтинг: 0 / 0
15.01.2008, 11:50
    #35062042
Bill Great
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
ova
Что значит ошибка- чья? Я ему даю Fill - он должен выбрать таблицу как она есть, более того - пробовал сделать запрос на подчиненную таблицу с параметром, т.е. выбираю только нужные записи, заполняю по FillBy - тот же результат
Выпишите ошибку, которая возникает у вас!
...
Рейтинг: 0 / 0
15.01.2008, 13:12
    #35062431
b0ris98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
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
15.01.2008, 13:45
    #35062560
Bill Great
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
Возьми, книгу сию

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

Всё это побробно расписано и дураком не помрёшь!
...
Рейтинг: 0 / 0
15.01.2008, 17:34
    #35063513
Сахават Юсифов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
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
15.01.2008, 19:58
    #35063879
b0ris98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
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
15.01.2008, 20:08
    #35063893
b0ris98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
Сахават Юсифов b0ris98
....
А при добавлении/удалении косяки выскакивают! Например, на сервере добавляется запись только в главную таблицу, а в подчиненной - пусто, хотя при этом в датасете связи по ключам работают и данные есть и в главной, и подчиненной (FK_ID=PK_ID). Я использую VS2005.

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

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

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

Код: plaintext
1.
this.детали_СчетаTA.Update(this.DS1.Детали_счета_ЗТ.Select("", "", DataViewRowState.Deleted));
                this.счетTA.Update(this.DS1.Счет_ЗТ.Select("", "", DataViewRowState.Deleted));
...
Рейтинг: 0 / 0
16.01.2008, 09:36
    #35064375
b0ris98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
Сахават Юсифов 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
16.01.2008, 10:35
    #35064577
Сахават Юсифов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
b0ris98Both Relation And Foreign Key Constraint.
Ну, и соотвественно update/delete rules.
Both, NoAction. :)
...
Рейтинг: 0 / 0
18.01.2008, 07:41
    #35070213
b0ris98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
Здравствуйте, уважаемые коллеги!
Попробую, так сказать, еще раз описать проблему. На тривиальном хрестоматийном примере страны-континенты. На 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
20.01.2008, 16:47
    #35074199
b0ris98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
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
23.01.2008, 09:09
    #35080449
TeXpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
А как быть в случае нетипизированного DataSet?
...
Рейтинг: 0 / 0
25.01.2008, 09:42
    #35086779
b0ris98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
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
25.01.2008, 12:35
    #35087468
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
как у вас все сложно с вашими датасетами...
...
Рейтинг: 0 / 0
25.01.2008, 12:38
    #35087489
Bill Great
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
Если оставаться с датасетами то удобное теперь средства tableAdapterManager
...
Рейтинг: 0 / 0
25.01.2008, 13:19
    #35087663
b0ris98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
Bill GreatЕсли оставаться с датасетами
А есть другие альтернативы, использовать ADO.NET и без датасетов?
Я что-то пропустил?
...
Рейтинг: 0 / 0
25.01.2008, 13:21
    #35087673
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
ORM
Linq, например
...
Рейтинг: 0 / 0
25.01.2008, 13:37
    #35087739
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSDN: Walkthrough: Saving Data to a Database (Multiple Tables)
вот если говорить простым языком из книги

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


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