DataContext Violation UNIQUE KEY
От: Deskny  
Дата: 25.09.08 14:43
Оценка:
В процессе работы с линком возник вопрос, найти ответ самостоятельно не получилось, есть надежда, что форумчане помогут...
Cитуация:
В БД существует таблица организаций, имеющая ключ уникальности по полю "Наименование"
Работаю с данными через Linq to SQL.

Выполняю следующий код:

//удаляю организацию с именем MyOrg
Organization type = (from tbl in context.Organizations
where tbl.Name == "MyOrg"
select tbl).Single();
context.Organizations.DeleteOnSubmit(type);

//Добавляю новую организацию с именем MyOrg
Organization type1 = new Organization();
type1.Name = "MyOrg";
context.Organizations.InsertOnSubmit(type1);

//Сохраняю изменения в БД
context.SubmitChanges();

В момент вызова SubmitChanges получаю SqlException "Violation of UNIQUE KEY constraint".
Выяснилось, что при накате изменений в БД контекст первым делом вызывает insert и, естественно,получает эксепшн, т.к. в этот момент в базе оказываются две записи с именем MyOrg.

Советы накатывать SubmitChanges последовательно не принимаются — на самом деле логика работы намного сложнее, чем приведена в тестовом примере, и изменить порядок работы я не могу.

Может быть как-то можно указать последовательность выполнения операций на БД (сначала delete, потом submit) или еще как-то разрулить ситуацию
Как вариант можно удалить нафик ключ уникальности, но как-то неправильно делать дизайн базы исходя из возможностей инструмента...
Но, наверно, придется удалить...
linq datacontext
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.