Допустим, у меня есть 2 таблицы: книги и авторы. Они представлены в виде следующих моделей EF:
class Book {
Guid Id { get; set; }
string BookName { get; set; }
Author Author { get; set; }
}
class Author {
Guid Id { get; set; }
string Name { get; set; }
}
Обе сущности имеют автоматически сгенерированный идентификатор Guid, т.е. перед вставкой в базу данных идентификаторы генерируются на клиентском сайте (это стандартное поведение npg sql). внешний ключ к таблице авторов. Итак, допустим, у меня уже есть несколько авторов. Я хотел бы добавить новую книгу какого-то автора. Это веб-приложение, поэтому у меня есть репозитории, введенные в контроллер. Перед вставкой новой книги я загружаю (только для чтения, т.е. AsNoTracking для повышения производительности) доступных авторов, нахожу нужного автора и назначаю этого автора свойству Author вновь созданной книги. На DbContext.SaveChanges я получил сообщение о том, что данный идентификатор уже существует. Я подозреваю, что EF пытается добавить нового Author с заданным идентификатором (даже если он уже существует в базе данных), потому что объект Author был загружен как NoTracking.
Есть ли способ загрузить внешний ключ, так как нет отслеживания для создания новые лица?
Спасибо