Я пытаюсь вставить ссылку на объект в свой основной объект, но EntityFramework будет жаловаться, если я не буду использовать свой ранее управляемый объект. Я просто хочу избежать зависимости от dbContext при создании моего объекта.
Упрощенный пример:
class Movie {
public ApplicationUser Owner { get;set; }
}
var myMovie = db.Movies.FirstOrDefault(m, m => m.Id = 1);
myMovie.Owner = new ApplicationUser { Id = 2 };
// I have to attach or change its state, otherwise, EF will complain the object is not complete
db.Entry(myMovie.Owner).State = EntityState.Unchanged;
Как бы то ни было, если тот же ApplicationUser был ранее загружен контекстом, я получаю эту ошибку:
Сохранение или принятие изменений не удалось, поскольку более одного объекта типа "ApplicationUser" имеют одинаковое значение первичного ключа. Убедитесь, что явно заданные значения первичного ключа уникальны. Убедитесь, что первичные ключи базы данных настроены правильно в базе данных и в модели Entity Framework. Используйте конструктор Entity Designer для конфигурации First First/Model First. Используйте свободно распространяемый API 'HasDatabaseGeneratedOption' или 'DatabaseGeneratedAttribute' для конфигурации Code First.
Как я могу избежать этой проблемы? Оптимально, я бы не хотел говорить о состоянии этого нового объекта.