Почему DbContext.Attach
устанавливает состояние объекта в EntityState.Modified
в следующем примере?
var db = new TestContext();
var book = new Book {
BookId = 1,
Author = new Author {
FirstName = "Charles",
LastName = "Dickens"
}
};
db.Attach(book); // Book Modified, Author Added - no "store generated key"
Пример взят из здесь .
Согласно описанию метода Attach
метод:
Сообщает EF, что объект уже существует в базе данных, и устанавливает состояние объекта в значение Без изменений.
Итак, в приведенном выше примере я бы ожидал, что Book
будет Unchanged
, но не Modified
. Я что-то здесь упускаю?
ОБНОВЛЕНИЕ
После опробования кода я понял, что он вообще не будет работать. Это потому, что мы можем выполнить операцию Attach
только над набором объектов. Таким образом, db.Attach(book);
следует изменить на db.Books.Attach(book);
. Но все же я не могу понять, что заставляет метод Attach
устанавливать состояние объекта на Modified
, но не Unchanged
.