SqlMethods.DateDiffMonth в Entity Framework - PullRequest
3 голосов
/ 11 февраля 2009

Кто-нибудь знает, что является заменой SqlMethods.DateDiffMonth в Entity Framework.

Это ошибка, которую я получаю, когда пытаюсь ее использовать.

LINQ to Entities не распознает метод метода Int32 DateDiffMonth (System.DateTime, System.DateTime), и этот метод нельзя преобразовать в выражение хранилища.

Ответы [ 2 ]

2 голосов
/ 17 ноября 2009

Может показаться, что в настоящее время вам необходимо выразить это с помощью оператора eSQL, который эффективно вызывает метод SQLServer DATEDIFF

Например:

db.entity.Where("SqlServer.DATEDIFF('MONTH', [start date], [end date]) = 1");

(см. здесь для получения дополнительной информации)

Однако, когда выйдет .NET Framework версии 4.0 (или вы можете использовать его сейчас, если вам нравится играть с бета-версией программного обеспечения! :), вы сможете использовать метод DateDiff нового SqlFunctions class , который является частью нового System.Data.Objects.SqlClient пространства имен в .NET 4.0

0 голосов
/ 25 июля 2013

Поскольку вы используете LINQ to Entities, лучшим способом будет следующее:

var query = query.Where(e => DateTime.Today >= EntityFunctions.TruncateTime(e.StartDateTime)
&& DateTime.Today <= EntityFunctions.TruncateTime(e.EndDateTime));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...