Проблема ограничения внешнего ключа при удалении из нескольких таблиц с использованием linq to sql - PullRequest
2 голосов
/ 27 февраля 2011

У меня есть две таблицы с ограничением внешнего ключа. Как я могу удалить строки из обеих из них в одной транзакции? linq to SQL, кажется, вызывает мои удаления в неправильном порядке. Где-нибудь я могу проверить и убедиться, что ограничение правильно распознается linq to SQL ??

 DataContext.OtherImages.DeleteOnSubmit(myOtherImage);
 DataContext.Images.DeleteOnSubmit(myImage);
 DataContext.SubmitChanges();

Ограничение внешнего ключа на OtherImages. Спасибо!

Ответы [ 2 ]

3 голосов
/ 27 февраля 2011

В вашем классе изображений должно быть что-то вроде

[Association(
    Name="FK_OtherImages_Images",
    Storage="_OtherImages",
    OtherKey="ImageId",
    DeleteRule="NO ACTION")]
public EntitySet<OtherImage> OtherImages{
    ...
}

.

DataContext.OtherImages.DeleteOnSubmit(myOtherImage);
DataContext.Images.DeleteOnSubmit(myImage);
DataContext.SubmitChanges();

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

DataContext.Log = Console.Out;

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

0 голосов
/ 03 марта 2011

простая логика

установить отношение внешнего ключа

перейти к варианту :: Таблица дизайнеров

  1. Enfore для тиражирования: НЕТ
  2. Если ограничение внешнего ключа: НЕТ
...