powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Две таблицы с автоинкрементными ключами
13 сообщений из 13, страница 1 из 1
Две таблицы с автоинкрементными ключами
    #34414594
killmeplease
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пишу программу на c#. есть две таблицы. индексы в них автоинкрементные. первая ко второй состоит в отношении один ко многим. строки добавляются/удаляются, т.е. при осуществлении update айдишники меняются.

добавляю на форме запись в первую таблицу:
id 0

добавляю во вторую:
id 0
t1 0 (ссылка на запись в первой)

делаю апдейт первой, в ней становится, например,
id 5

во второй поле t1 по прежнему хранит 0. делая апдейт второй таблицы естественно получаю The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Table2_Table1".

не знаю, что за фигня.. я в ступоре! почему то раньше такой проблемы не возникало.. мне казалось при апдейте чего-нибудь все ссылки исправляются.. тем более update rule выбрано CASCADE (датасет типизированный).. чепуха какая то!

зы: я сначала по ошибке в раздел MSSQL Server запостил.. там мне посоветовали эти поля по одной штучке добавлять! но я то знаю что раньше всё работало как-то так) плииз хелп!

ззы: сейчас вообще тупняк.. добавляю в грид вью две строчке, одна получается например с айдишником 1, другая - с 3, делаю апдейт - а мне орут мол запись с id = 3 ужо есть! че такое вобще??
...
Рейтинг: 0 / 0
Две таблицы с автоинкрементными ключами
    #34416782
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что бы не было конфилктов суррогатных с реальными ID назначейте autoincrementstep и ...seed равным -1

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Две таблицы с автоинкрементными ключами
    #34417254
killmeplease
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, сейчас попробую!
...
Рейтинг: 0 / 0
Две таблицы с автоинкрементными ключами
    #34417284
killmeplease
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гм... ну в общем то это не решает главной проблемы..
обнавленные айдишники не совпадают с айдишниками во второй таблице.. которая апдейтится вслед за первой.
...
Рейтинг: 0 / 0
Две таблицы с автоинкрементными ключами
    #34417382
dmitry_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
killmepleaseгм... ну в общем то это не решает главной проблемы..
обнавленные айдишники не совпадают с айдишниками во второй таблице.. которая апдейтится вслед за первой.
так relation надо сделать и настроить
...
Рейтинг: 0 / 0
Две таблицы с автоинкрементными ключами
    #34417524
killmeplease
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я поставил в properties каскадное обновление и удаление.. может еще забыл что нибудь?
при апдейте первой таблицы, во второй св-во table1Row обращается в null (
...
Рейтинг: 0 / 0
Две таблицы с автоинкрементными ключами
    #34418531
killmeplease
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по ходу что то глючит у меня... каскадное удаление тоже не работает.. хотя вроде должно ))
...
Рейтинг: 0 / 0
Две таблицы с автоинкрементными ключами
    #34419914
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как уже апдейтите непосредственно базу данных.

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Две таблицы с автоинкрементными ключами
    #34420285
killmeplease
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
базу данных - методом Update тэйбл адаптера.

зы: по идее, если в dataGridView, подключенный к датасету, ввести поле с неправильным внешним ключем - он должен ругаться, верно? у меня что-то этого не происходит.. Установил вижл студию по новой, с другого диска - все равно..
...
Рейтинг: 0 / 0
Две таблицы с автоинкрементными ключами
    #34420521
killmeplease
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так ГЛЮК!

делаю "простой советский" датасет:

Код: 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.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
            
            DataSet ds1 = new DataSet();

            DataTable t1 = new DataTable();
            DataTable t2 = new DataTable();

            DataColumn id1 = new DataColumn("id", typeof(int));
            id1.AutoIncrement = true;
            id1.AutoIncrementSeed = - 1 ;
            id1.AutoIncrementStep = - 1 ;
            id1.Unique = true;

            DataColumn id2 = new DataColumn("id", typeof(int));
            id2.AutoIncrement = true;
            id2.AutoIncrementSeed = - 1 ;
            id2.AutoIncrementStep = - 1 ;
            id2.Unique = true;

            t1.Columns.Add(id1);
            t1.PrimaryKey = new DataColumn[] { id1 };

            t2.Columns.Add(id2);
            t2.PrimaryKey = new DataColumn[] { id2 };
            t2.Columns.Add("lnk", typeof(int));

            ds1.Tables.Add(t1);
            ds1.Tables.Add(t2);
            ds1.Relations.Add(new DataRelation("rel", id1, t2.Columns["lnk"]));
            ds1.Relations[ 0 ].ChildKeyConstraint.UpdateRule = Rule.Cascade;
            ds1.Relations[ 0 ].ChildKeyConstraint.DeleteRule = Rule.Cascade;

            DataRow r;

            r = t1.NewRow();
            t1.Rows.Add(r);
            int FK = (int)r[id1];

            r = t2.NewRow();
            r["lnk"] = FK;
            t2.Rows.Add(r);

            t1.Rows.RemoveAt( 0 );
все прекрасно работает - каскадное удаление, обновление, на форин кей ругается если ввести не то!

а вот типизированный датасет, сгенерированный студией:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
            ds.Table1Row r1 = ds.Table1.NewTable1Row();
            ds.Table1.AddTable1Row(r1);
            int FK = r1.id;

            ds.Table2Row r2 = ds.Table2.NewTable2Row();
            r2.lnk =  80 ;
            ds.Table2.AddTable2Row(r2);
такая байда прокатила без проблем!
хотя в настройках везде-везде все ограничения установлены...

подскажите, из-за чего это может быть??
...
Рейтинг: 0 / 0
Две таблицы с автоинкрементными ключами
    #34420714
killmeplease
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
похоже, что студия генерирует левый код :(
диск лицензионный из майкрософта, много тыщ стоит.. пробовал на других компах ставить - тот же эффект. принес из дома C# эскпресс - то же... блин, придется без типизированных датасетов обходиться ((
...
Рейтинг: 0 / 0
Две таблицы с автоинкрементными ключами
    #34425973
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вы в дизайнере типизированного датасет у Relation проставляете каскадные обновления?

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Две таблицы с автоинкрементными ключами
    #34427047
killmeplease
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совсем забыл про них..
спасибо!

вот я дурак ))))

зы: все же у меня ощущение что раньше они автоматом проставлялись, или типа того)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Две таблицы с автоинкрементными ключами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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