2009-02-11 5 views
3

Est-ce que quelqu'un sait quel est le remplacement de SqlMethods.DateDiffMonth dans Entity Framework.SqlMethods.DateDiffMonth dans Entity Framework

C'est l'erreur que j'obtiens lorsque j'ai essayé de l'utiliser.

LINQ to Entities ne reconnaît pas la méthode Int32 DateDiffMonth (System.DateTime, System.DateTime) de la méthode, et cette méthode ne peut pas être traduite dans une expression de magasin.

Répondre

2

Il semblerait que, actuellement, vous devez exprimer en utilisant une déclaration eSQL qui appelle efficacement jusqu'à la méthode SQLServer DATEDIFF

Par exemple:

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

(Voir here pour plus d'infos) Cependant, lorsque le .NET Framework version 4.0 est publié (ou vous pouvez l'utiliser maintenant si vous aimez jouer avec le logiciel bêta! :) vous devriez pouvoir utiliser le DateDiff method du nouveau SqlFunctions class, qui fait partie de la nouvelle System.Data.Objects.SqlClient Namespace dans .NET 4.0

+0

SqlFunctions.DateDiff pour moi il triés, cheers! – Shawson

0

Puisque vous utilisez LINQ to Entities la meilleure façon serait d'utiliser les éléments suivants:

var query = query.Where(e => DateTime.Today >= EntityFunctions.TruncateTime(e.StartDateTime) 
&& DateTime.Today <= EntityFunctions.TruncateTime(e.EndDateTime));