Путаница присоединения / обновления Entity Framework (EF Core) - PullRequest
0 голосов
/ 05 июня 2018

У меня просто небольшая путаница в методах EF "Присоединить" и "Обновить".

Как я понимаю, когда вызывается "Обновление", каждое свойство в конкретной сущности изменяется.

Метод «Присоединить», с другой стороны, запускает объект в состоянии «Не изменено».Затем, когда операция выполняется с определенным свойством, это конкретное свойство изменяется только.Таким образом, «Присоединение» более полезно для отдельных изменений свойств, а «Обновление» более полезно, если вы хотите обновить каждое свойство в сущности (я могу ошибаться в этом понимании).

Однако, что я делаюНе понимаю, что происходит, когда ни один из этих двух методов не вызывается во время изменения свойства.Например, рассмотрим пример с таблицей «ученики»:

student.City = "Calgary";
student.Name = "John Smith";
database.SaveChanges();

Поскольку мы не помечаем какое-либо свойство в измененном объекте, как будет отличаться сгенерированный запрос из приведенного выше кода?

1 Ответ

0 голосов
/ 06 июня 2018

Рассмотрим следующий код:

students entity = new students() {
    Id = 1,
    City = "New York",
    Name = "Sam"
};
using(SomeContext ctx = new SomeContext())
{
    ctx.Entry(entity).State = EntityState.Modified;
    ctx.SaveChanges();
}

Предполагая, что у нас есть запись с id = 1 в базе данных, приведенный выше код обновит эту сущность в базе данных.

Attach используется, когда вы знаете, что объект уже существует в базе данных, но хотите внести некоторые изменения во время изменения состояния на измененное, если вы уже внесли изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...