Невозможно создать постоянное значение типа 'System.Object'. В этом контексте поддерживаются только примитивные типы (такие как Int32, String и Guid). - PullRequest
8 голосов
/ 07 мая 2011

Я использую MVC и Entity Framework.Я создал класс в своей папке модели с этим кодом ниже.Я продолжаю получать сообщение об ошибке выше с обоими запросами ниже.Я знаю, что существует известная проблема со ссылками на нескалярные переменные, но я не уверен, как реализовать обходной путь:

http://msdn.microsoft.com/en-us/library/bb896317.aspx#Y1442

private MovieLibraryDBEntities movieLibraryDBEntitiesContext;

public int getNumberOfEntriesReserved()
{
    return (from m in movieLibraryDBEntitiesContext.Movies
            where m.CheckedOut.Equals(1)
            select m).Count();

    //return movieLibraryDBEntitiesContext.Movies
    //  .Where(e => e.CheckedOut.Equals(1))
    //  .Select (e => e.Title).Count();
}

Ответы [ 3 ]

14 голосов
/ 07 мая 2011

Вы не можете использовать m.CheckedOut.Equals(1) в запросе linq-to-entity. Используйте m.CheckedOut == 1, но CheckedOut должно быть integer.

3 голосов
/ 14 ноября 2013

Это старый вопрос. У меня была такая же проблема при попытке отфильтровать обнуляемый столбец с помощью интерфейса IQueryable. Я решил проблему, сначала проверив, имеет ли объект значение, а затем проверив значение.

widgets = widgets.Where(x => x.ID.HasValue.Equals(true) &&  x.ID.Value.Equals(widgetID));
1 голос
/ 19 октября 2012

та же проблема с использованием Any() мне пришлось изменить условие where для поиска примитивных типов, для меня int

, так что

where order.User == user

становится этим

where order.User.UserId == user.UserId

В блоге есть , объясняющий причуду.

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