Чтение вновь созданной сущности из контекста объекта

#c# #entity-framework-4

#c# #entity-framework-4

Вопрос:

У меня есть ObjectContext и entity, давайте назовем это Device . Ключ сущности объекта не генерируется автоматически, а указывается при добавлении в контекст. После добавления нового объекта со следующим кодом

 Context.Devices.Add(new Device{Id = someVal, /*initialization*/});
  

Я пытаюсь прочитать эту сущность

 var dev = Context.Devices.SingleOrDefault(d => d.Id == someVal);
  

и получение null.

Конечно, после вызова SaveChanges() Я могу прочитать это устройство из базы данных.

Почему я не могу прочитать сущность из контекста?

Ответ №1:

Потому что, пока вы не вызовете SaveChanges, он фактически не существует в базе данных. Ваш вызов Context.Devices.SingleOrDefault(d => d.Id == someVal); выполняет обратный вызов к базе данных.

Комментарии:

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

2. Хм. Я бы проверил коллекцию Context.Devices через отладчик, чтобы увидеть, отображается ли там только что добавленный вами объект… Возможно, использование Find вместо SingleOrDefault будет работать.