Linq to SQL InsertOnSubmit для нескольких объектов - PullRequest
0 голосов
/ 08 сентября 2010

У меня проблема с Linq to SQL InsertOnSubmit, которая, кажется, работает только для первого элемента в таблице.

Например, со следующим:

var noteDetail1 = new NoteDetail() { Title = "Test Note Title 1", NoteText = "Test note" };
var waiverDetail1 = new WaiverDetail() { Title = "Test Waiver Title 1", NoteText = "Test waiver details text" };
var riskDetail1 = new RiskDetail() { Title = "Test Risk Title 1", NoteText = "Test risk details text" };
context.Notes.InsertOnSubmit(noteDetail1);
context.Notes.InsertOnSubmit(riskDetail1);
context.Notes.InsertOnSubmit(waiverDetail1);
context.SubmitChanges();

Я получаю толькопервый объект («Название 1 тестовой заметки»), вставленный в базу данных.Если я помещаю SubmitChanges после каждого InsertOnSubmit, все строки успешно вставляются.

Все вышеперечисленные типы унаследованы от класса Note, поэтому вставляются в одну таблицу.

Я,однако, испытываю ту же проблему с не производными классами.

Я долго смотрел на это, но не могу найти то, что сделал неправильно.Вся идея InsertOnSubmit / SubmitChanges заключается в том, что вы можете сделать несколько изменений, поэтому должно быть что-то простое, чего мне не хватает.

1 Ответ

0 голосов
/ 08 сентября 2010

Проблема заключалась в том, что я переопределил Equals в моих классах сущностей, чтобы сущности с одинаковым Id считались одинаковыми. Очевидно, что Linq to SQL использует это в какой-то момент и получает результат, что все новые объекты равны (потому что все они имеют Id 0).

Спасибо Джонатану за то, что он мой "Резиновая утка" .

...