#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 будет работать.