Я немного запутался в отношении того, как работает dbContext в EF.
Если я сделаю что-то вроде _context.Persons.Add(_person)
(если предположить, что человек является допустимым объектом), если я тогда (перед вызовом _context.SaveChanges ()) query Persons, будет ли только что добавленный человек включен в результаты?
Например:
Person _person = new Person() {Firstname = "Bill", Lastname = "Snerdly"};
_context.Persons.Add(_person);
var _personList = _context.Persons.Where(p => p.Lastname.StartsWith("Sne"));
Всякий раз, когда я пытаюсь это сделать, создается впечатление, что контекст теряет связь стот факт, что я добавил этого нового человека в контекст.
Что меня смущает, так это то, что если я редактирую существующего человека, присоединяю человека и устанавливаю измененное состояние, запрос контекста, кажется, отслеживаетвнесенные изменения и возвращает их в результаты.Например:
//Assuming that Person 5 exists with the name William Snerdly
Person _person = new Person() {Id = 5, Firstname = "Bill", Lastname = "Snerdly"};
_context.Persons.Attach(_person);
_context.Entry(_person).State = System.Data.EntityState.Modified;
var _personList = _context.Persons.Where(p => p.Lastname.StartsWith("Sne"));
В этом случае, похоже, что человек с идентификатором 5 появится в списке с именем Билл вместо Уильяма.Таким образом, контекст запрашивал данные, но сохранял изменения, тогда как в первом сценарии контекст запрашивал данные, но игнорировал любые добавленные элементы.Это просто кажется немного противоречивым.
Я правильно понимаю, или я что-то упустил?
Спасибо за вашу помощь с этим.