Даже если ваш запрос возвращает один объект, метод Select
, который вы используете за кулисами, не делает. Возвращает IQueryable<T>
в EF.
Вы должны использовать метод, такой как Single
, SingleOrDefault
, First
, FirstOrDefault
, если вы хотите сохранить один объект.
var querySlotOrder = (from slot in context.CmsSlots
where slot.SlotId == myCurrentSlotId
select slot).Single();
Разница между четырьмя методами:
Single
: возвращает единственный элемент последовательности и выдает исключение, если в последовательности нет точно одного элемента.
SingleOrDefault
: возвращает единственный элемент последовательности или значение по умолчанию, если последовательность пуста; этот метод генерирует исключение, если в последовательности более одного элемента.
First
: возвращает первый элемент последовательности.
FirstOrDefault
: возвращает первый элемент последовательности или значение по умолчанию, если последовательность не содержит элементов.
(Определения от MSDN )