Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LINQ (Language-Integrated Query) > Вставка существующих строк


Автор: Fobos 6.8.2010, 17:17
Есть таблица, каждая строка в моей проге представлена экземпляром класса. Есть форма в которой можно создать новый экземпляр класса, создаю его, нажимаю "Добавить", вызывается такой код:
Код

db.Drivers.InsertOnSubmit(driver);
try
{
    db.SubmitChanges(ConflictMode.FailOnFirstConflict);

я специально создал такой экземпляр в котором ключевое поле не уникально, естественно вываливается исключение DuplicateKeyException.
Я меняю значение на форме в ключевом поле и жму еще раз добавить, в строке db.Drivers.InsertOnSubmit(driver); - добавляется новый элемент, но при выполении db.SubmitChanges(ConflictMode.FailOnFirstConflict); опять вываливается DuplicateKeyException.
Получается что тот первй элемент сохранился где-то в моей таблице и теперь опять хочет добавиться в БД. 
Подскажите как это обойти?

Автор: KelTron 10.8.2010, 05:32
Используй для каждого запроса новый экземляр контекста, и не будет проблем.

Автор: Fobos 11.8.2010, 17:07
Ну это прога заново будет подключаться, прога сама должна работать по сети - лишняя нагрузка на сеть на постоянные переподключения. Но, в принципе, этот вариант работает.

Автор: KelTron 11.8.2010, 18:38
Цитата(Fobos @  11.8.2010,  17:07 Найти цитируемый пост)
лишняя нагрузка на сеть на постоянные переподключения

Эту проблему решает пул соединений..

Автор: Dgedit 11.8.2010, 23:11
А разве для LINQ возможны пуллы соединений? Я в инете что-то не нашел ничего.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)