Добавление в таблицу ассоциации без загрузки - PullRequest
0 голосов
/ 12 января 2020

У меня есть три таблицы: A, B и таблица ассоциации AB. Поскольку Entity Framework не создает отдельную сущность для таблицы ассоциации, создаются только сущности A и B.

Теперь я хочу добавить B s к сущности A, но я не хочу загружать все эти B сущности из базы данных, так как я знаю идентификаторы B сущностей, которые я хочу добавить к A. Я попытался сделать следующее:

A.Bs.Add(
    new B(){
        Id = 100
    }
);

Проблема заключается в том, что, когда нет сущности B с Id из 100, вместо выдачи исключения из-за ограничения внешнего ключа, EF создает новый объект B с Id из 100 и затем добавляет его в таблицу ассоциации.

Как я могу предотвратить создание нового B?

1 Ответ

2 голосов
/ 12 января 2020

Похоже, что создание объекта B вне операции Add и либо присоединение его к контексту, либо пометка его состояния как «неизменного» работает как требуется.

var b = new B(){
    Id = 100
};

context.B.Attach(b);
//OR
context.Entry(b).State = EntityState.Unchanged;

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