15 ноября 2016
Кравченко Виктор

The specified type member 'Date' is not supported in LINQ to Entities.

ASP.NET Visual Studio 2013 .NET База знаний ПК Решение проблем MVC 5
01

Сообщение об ошибке:

02
03

Появляется при попытке использовать напрямую в LINQ-запросах свойства объектов с типом Date:

04 VB.NET
1
Dim views As Statistic = db.Statistics.SingleOrDefault(Function(s) s.Date = Now.Date)
05

Это связано с тем, что Entity Framework не умеет переводить свойства объектов с типом Date в SQL-запрос, и поэтому генерирует исключение.

06

Чтобы решить проблему необходимо, во-первых, использовать переменную с типом Date, с заранее присвоенным значением, а во-вторых, воспользоваться функцией TruncateTime():

07 VB.NET
1
2
Dim today As Date = Now.Date Dim views As Statistic = db.Statistics.SingleOrDefault(Function(s) DbFunctions.TruncateTime(s.Date) = today)
08 На заметку:
При использовании Entity Framework ниже версии 6, функция TruncateTime() принадлежит классу EntityFunctions, который включен в .NET Framework (4.5+). Класс DbFunctions был введен в Entity Framework 6, который поставляется отдельно от .NET Framework. В новых приложениях использующих EF 6+ необходимо использовать класс DbFunctions.
10

Похожие запросы:

  • What are the difference between EntityFunctions.TruncateTime and DbFunctions.TruncateTime methods?
  • Date Comparison In Entity Framework Linq Query
  • 'Date' is not supported in LINQ to Entities
comments powered by HyperComments