Linq to SQL InsertOnSubmit для нескольких объектов

У меня проблема с 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 ответ

Решение

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

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

Другие вопросы по тегам