Я работаю с ASP.NET MVC3, используя EF и Code First.
Я пишу простой трекер проблем для практики.В моем контроллере у меня есть довольно стандартный код:
[HttpPost]
public ActionResult Edit(Issue issue) {
if (ModelState.IsValid) {
dbContext.Entry(issue).State = EntityState.Modified
.....
}
}
Вопрос часть 1 Я пытаюсь разобраться, как работает dbcontext - прежде чем я установлю состояние в dbContext.Entry(проблема), я предполагаю, что мой объект проблемы отсоединен.Как только я устанавливаю состояние, которое нужно изменить, объект присоединяется - но к чему?dbContext или база данных?Мне не хватает того, что на самом деле означает это (прикрепление)?
Вопрос, часть 2 Ради аргумента, скажем, я решил установить поле «Принято» в моей проблеме.Принято логическое значение.Я начинаю с того, что он ложный, я устанавливаю это значение в форме и отправляю.В какой момент мой объект присоединен, в чем смысл коллекции OriginalValues?например, если я устанавливаю точку останова сразу после установки EntityState.Modified, но перед вызовом SaveChanges () я могу запросить
db.Entry(issue).OriginalValues["Accepted"]
, и это даст мне то же значение, что и простой запрос объекта вопроса, который был переданв Edit .... то есть он дает тот же результат, что и
issue.Accepted
Я явно что-то упускаю, потому что в документации сказано: "Исходные значения обычно являются значениями свойств объекта, какими они были в последний раззапрашивается из базы данных. "Но это не тот случай, потому что база данных по-прежнему сообщает о том, что Accepted принят как ложный (да, я заметил слово «обычно» в документации, но мой код в значительной степени стандартно генерируется кодом MS, так что…).Итак, что мне не хватает?что на самом деле здесь происходит?