2012-01-12 2 views
1

Я новичок в C#, и мне нужна помощь.Обновление набора TableAdapter и DataSet с несколькими таблицами

enter image description here

Я просто хочу, чтобы обновить строку в таблице Session кодом ниже.

 dbDataSet db = new dbDataSet(); 
     SessionTableAdapter sessionTableAdapter = new SessionTableAdapter(); 
     sessionTableAdapter.Fill(db.Session); 
     var session = db.Session.Where(s => s.idSession.Equals(new Guid("{0F0B0E1A-950E-4BCE-9C68-6D1387EDAC90}"))).SingleOrDefault(); 
     session.endTime = DateTime.Now; 
     sessionTableAdapter.Update(db.Session); 

я получил ошибку в "sessionTableAdapter.Update (db.Session)"

An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll 

Additional information: The record cannot be deleted or changed because table 'PaidLog' includes related records. 

Как исправить эту ошибку?

ответ

0

Решено!

Вначале я просто отмечаю только принудительную ссылочную целостность.

Но я стараюсь, чтобы галочка Cascade Update Related Fields, и это работает!

Я не знаю, почему это работает.

Кто-нибудь знает причину этого?

Кстати, спасибо Махипе.

enter image description here

3

В сообщении об ошибке говорится все. Таблица сеанса имеет отношение внешнего ключа к PaidLog. Сначала вам нужно будет обновить дочерние строки из этой таблицы.

Смотрите эту article on MSDN для получения более подробной информации в «Обновление двух связанных таблиц в Dataset с TableAdapter» разделе

Или вы можете захотеть использовать TableAdapterManager

+0

это означает, что мне нужно обновить PaidLog первый? –

+0

Да. вы должны сначала обновить дочерние строки. – Maheep

+0

http://pastebin.com/xL36v2nZ У меня такая же ошибка в строке 11. –

Смежные вопросы