powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Linq: Удаляются записи в нескольких таблицах, а надо удалить только в одной.
8 сообщений из 8, страница 1 из 1
Linq: Удаляются записи в нескольких таблицах, а надо удалить только в одной.
    #39069741
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема: Удаляются записи в нескольких таблицах, а надо удалить только в одной.
Дано: две модели
1. DirCurrency - в ней надо удалить запись
Код: c#
1.
2.
3.
4.
5.
6.
7.
public class DirCurrency
{
    [Key]
    public int DirCurrencyID { get; set; }
    public bool Del { get; set; }
    // ...
}


2. SysSettings - Это настройки, которые содержат ForeignKey для DirCurrency
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class SysSettings
{
    [Key]
    public int SysSettingsID { get; set; }

    [Display(Name = "Валюта")]
    [Required]
    public int DirCurrencyID { get; set; }
    [ForeignKey("DirCurrencyID")]
    public virtual Dir.DirCurrency dirCurrency { get; set; }

    // ...
}



Вот и само удаление:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
     //Настройки, нужны для некоторых операций
     SysSettings sysSettings = await db.SysSettingss.FindAsync(1);

     //Поиск
     DirCurrency dirCurrency = await db.DirCurrencies.FindAsync(id);
     if (dirCurrency == null) return NotFound();
     //Удаление
     db.DirCurrencies.Remove(dirCurrency);
     await db.SaveChangesAsync();



И весь прикол в том, что записи удаляются и из настроек (таблица в БД SysSettings ) и из таблицы DirCurrency , хотя удаление производилось только из DirCurrency , вот код:
Код: c#
1.
2.
     db.DirCurrencies.Remove(dirCurrency);
     await db.SaveChangesAsync();



Причину нашёл: Это из-за ForeignKey в модели SysSettings для модели DirCurrency . Как только убираем связь, удаляет только из таблицы DirCurrency .
Можно как-то "обойти" эту ... не знаю как её назвать даже.
...
Рейтинг: 0 / 0
Linq: Удаляются записи в нескольких таблицах, а надо удалить только в одной.
    #39069751
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
potkin... не знаю как её назвать даже.

))))

Каскадное удаление.

Код: c#
1.
  .ForeignKey("dbo.some_model", t => t.some_field, cascadeDelete: true)



Но позволь... - Что ты хочешь, чтобы было в таблице SysSettings, после удаления записи из DirCurrency?
...
Рейтинг: 0 / 0
Linq: Удаляются записи в нескольких таблицах, а надо удалить только в одной.
    #39069940
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, это было "Каскадное удаление".
Но оно работает только при условии, что я сделал выборку:
Код: c#
1.
2.
     //Настройки, нужны для некоторых операций
     SysSettings sysSettings = await db.SysSettingss.FindAsync(1);
...
Рейтинг: 0 / 0
Linq: Удаляются записи в нескольких таблицах, а надо удалить только в одной.
    #39070273
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нужно ли использовать транзакции при каскадном удалении ?
Всё таки удаление происходит в нескольких таблицах?
...
Рейтинг: 0 / 0
Linq: Удаляются записи в нескольких таблицах, а надо удалить только в одной.
    #39071223
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
potkinА нужно ли использовать транзакции при каскадном удалении ?
Всё таки удаление происходит в нескольких таблицах?

Это не твой вопрос))
...
Рейтинг: 0 / 0
Linq: Удаляются записи в нескольких таблицах, а надо удалить только в одной.
    #39071246
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueЭто не твой вопрос))
То есть они используются?
...
Рейтинг: 0 / 0
Linq: Удаляются записи в нескольких таблицах, а надо удалить только в одной.
    #39071274
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
potkinMonochromatiqueЭто не твой вопрос))
То есть они используются?

Инфа 140%)))
...
Рейтинг: 0 / 0
Linq: Удаляются записи в нескольких таблицах, а надо удалить только в одной.
    #39084451
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueИнфа 140%)))
Может 146% ?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Linq: Удаляются записи в нескольких таблицах, а надо удалить только в одной.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]