Я унаследовал некоторые таблицы базы данных и Entity Framework, где у меня есть следующие таблицы:Entity Framework Как обновить детскую таблицу
Table Person
Id (Primary Key)
Sex
CarId (Foreign Key)
Table Car
Id (Primary Key)
Color
ManufacturerId (Foreign Key)
Table Manufacturer
Id (Primary Key)
Name
Я использую работу кадров Entity для извлечения данных в Pocos (без проблем). Теперь я хотел бы внести изменения в машину одного человека и сохранить обратно в БД. Я занимаюсь этим. у меня есть:
Car car= new Car { Color = "gray", Manufacturer = manufacturer};
_dbContext.Cars.Add(car);
_dbContext.SaveChanges();
person.Car = car;
_dbContext.Entry(person).State = EntityState.Modified;
_dbContext.SaveChanges();
Никакие исключения не выбрасываются, и появится новый автомобиль в базе данных, но человек строка не изменяется, чтобы указать на новый автомобиль. Может ли кто-нибудь сказать мне, что происходит, и как я должен обновляться? Я новичок в Entity Framework.
Кстати, я пробовал другие комбинации, такие как пытается
person.CarId = car.Id.
Это приводит к исключению:
реляционного нарушение ограничения целостности произошло: Свойство значения, которые определяют ссылочные ограничения не соответствуют между главными и зависимыми объектами в отношении.
Я не могу найти простой пример, чтобы прояснить ситуацию.
Большое спасибо. Ваши последние две строки _dbContext.DetextChanges() и _dbContext.SaveChanges() решили это для меня. Я не понял, что в коде есть строка: _dbContext.Configuration.AutoDetectChangesEnabled = false, что, я думаю, объясняет, почему помогает DetectChanges. Отмечено как ответ. – Dave
Какая версия Entity Framework вы, ребята, используете? У моего dbContext нет метода DetectChanges(). –