À l'aide de DateTime dans LINQ to entities
J'ai une base de données PostgreSQL qui interagit avec le programme via Entity Framework Code First.
Base de données contient une table "utilisateurs" de la colonne "visite" de type DateTime.
L'application est décrite comme;
public class Users
{ ...
[Required]
[Column("visit")]
public DateTime VisitDate
...
}
Que j'essaie d'exécuter cette requête;
var rslt = context.Visitors.Where(v => v.VisitDate.Date == DateTime.Now.Date).ToList()
Mais aussi d'avoir une exception: NotSupportedException
Quel est le problème?
pouvez-vous poster les détails intimes de votre exception?
vous pouvez utiliser
Je pense que vous pouvez dire
vous pouvez utiliser
var rslt = context.Visitors.Where(v => v.VisitDate.Date == DateTime.Now).ToList()
Je pense que vous pouvez dire
Datetime.Today
au lieu de DateTime.Now
?OriginalL'auteur pma11 | 2013-05-24
Vous devez vous connecter pour publier un commentaire.
DateTime.Date
propriété n'est pas prise en charge. Vous devez utiliserSqlFunctions.DatePart
méthode à la place. Il va se retrouver avecDATEPART
TSQL
méthode au sein de l'généré requête SQL.1[System.Int32] DatePart(System.String, System.Nullable
1[Système.DateTime])" sur le "type de Système.Les données.Objets.SqlClient.SqlFunctions" ne peut être traduite en une LINQ to entities magasin expression. C'est peut-être PostgreSQL du problème?OriginalL'auteur MarcinJuraszek
Utiliser la classe EntityFunction pour la coupe du temps de la partie.
Source: http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/84d4e18b-7545-419b-9826-53ff1a0e2a62/
OriginalL'auteur Mayur Borad
Le problème est que le fournisseur LINQ est d'essayer de convertir
DateTime.Now.Date
à une base de données de la méthode, il ne peut pas le faire par défaut. L'astuce de la date de la comparaison est de créer unDateTime
instance qui a son composant au moment de définir la valeur par défaut. Vous pouvez obtenir plus d'informations ici et ici.OriginalL'auteur Erik Schierboom
Mayur Borad de la réponse (à mon humble avis plus correct que l'on a accepté la réponse) est devenu obsolète:
System.Data.Entity.Core.Objects.EntityFunctions
est obsolète. Vous devez utiliserSystem.Data.Entity.DbFunctions
à la place.OriginalL'auteur Tim S