Выбор одной строки с помощью EF в MVC 3 vb.net - PullRequest
0 голосов
/ 24 октября 2011

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

Dim _classRoom As classrm = db.classrms.Select(Function(b) b.Course_ID = _CurrCourse.course_ref)

Где classrm - имя сущности, а db объявлена ​​как новая сущность. То, что я пытаюсь сделать, это выбрать строку из сущности на основе соответствующего Course_ID, который в этой модели является строкой. Так что позже я смогу использовать переменную _classRoom, чтобы получить другие элементы из той же строки. Однако я получаю следующую ошибку:

   Unable to cast object of type 'System.Data.Objects.ObjectQuery`1[System.Boolean]' to type 'Trial_Online.classrm'.

У кого-нибудь есть идеи ??? Мне нужно выполнить схожие задачи с несколькими разными сущностями, но если я укажу правильное направление, я смогу справиться с этим ...

Ответы [ 2 ]

4 голосов
/ 24 октября 2011

Используйте Where вместо Select для фильтрации результатов и добавьте First() или Single() в конец:

Dim _classRoom As classrm = db.classrms.Where(Function(b) b.Course_ID = _CurrCourse.course_ref).First()

Разница между First() и Single() заключается в том, что Single() сгенерирует исключение, если в результате будет более 1 элемента. Оба выдают исключение, если последовательность результатов пуста.

Вы также можете использовать FirstOrDefault() и SingleOrDefault(), чтобы вернуть Nothing, если нет результатов.

1 голос
/ 24 октября 2011

Не слишком знаком с синтаксисом запроса в VB.NET, но в C # я уверен, что вам нужно добавить First() или Single() в конец запроса, чтобы он проецировал результат в экземпляр объекта. В противном случае, я думаю, вы получите набор результатов (вероятно, объект IQueryable).

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