2017-01-16 4 views
0

Я использую SQLite в моем приложении, и моя таблица определена согласно этой модели EF:Получение значения MAX в столбце: указанный тип элемента не поддерживается в LINQ to Entities.

internal class Board 
{ 
    public string BoardID { get; set; } 
    public ushort BoardNumber { get; set; } 
    public string Content { get; set; } 

    public Board() 
    { 
     BoardID = string.Empty; 
     Content = string.Empty; 
     BoardNumber = 0; 
    } 
} 

Имена свойств совпадают точно столбцы базы данных. Я могу получить записи с той же моделью, используя LINQ to Entity. Однако, когда я пытаюсь эту операцию он терпит неудачу с ошибкой, указанной в теме:

using (var db = new Models.EF.MyDbContext()) 
{ 
    int last - db.Boards.Max(n => n.BoardNumber); 
} 

Столбец в базе данных под названием «BoardNumber» и имеет тип Integer (SQLite) и НЕ PK.

Почему эта операция не работает?

+0

Посмотрите, какой запрос сгенерирован с использованием профилировщика, а затем попробуйте выполнить тот же запрос непосредственно с sqllite db и посмотреть, работает ли он. – CodingYoshi

+0

Разве у тебя нет опечатки? отрицательный знак должен быть заменен знаком присваивания (=), правильно? – Sparrow

ответ

1

Это, скорее всего, потому, что ваш текущий тип - ushort и unsigned integers and types are not supported in LINQ to Entities.

Возможно, вы захотите рассмотреть использование другого типа, если это возможно, или рассмотреть возможность применения другого подхода для чтения этих конкретных значений similar to the one mentioned here.