Сначала удалите каскадное обновление кода Entity Framework - PullRequest
0 голосов
/ 26 августа 2011

У меня есть проблема, для которой я не могу найти решение: в основном я хотел бы, как отключить каскадное обновление EF CodeFirst для связи многих со многими.

У меня есть два класса List и Recipient.

public class List
{
    public string DisplayName { get; set; }
    public DateTime? LastSyncronized { get; set; }
    public virtual ICollection<Recipient> Recipients { get; set; }
}

public class Recipient
{
    public int Id { get; set; }
    public String Name { get; set; }

    public virtual  ICollection<List> Subscriptions { get; set; }
}

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

Затем я делаю свою обработку, и в конце я должен сделать то же самое для List, чтобы обновить свойство LastSyncronized. К сожалению, когда я сохраняю, автоматическое отслеживание EF также сохраняет в базе данных всех получателей, которые я взял из внешнего источника. Как я могу настроить DbContext, чтобы не сохранять новые объекты в базе данных?

Я пытался удалить их все из коллекции, но они все равно добавлялись в базу данных. В этом случае объединяющая таблица не изменяется, но получатель добавляется с новыми получателями.

Спасибо Simone

1 Ответ

0 голосов
/ 26 августа 2011

Не уверен, что это правильное решение, но я установил в классе DbContext:

Configuration.AutoDetectChangesEnabled = false;

Теперь добавленные объекты не добавляются в базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...