10
votes

Linq à l'entité reçoit une date de DateTime

var islemist = (de ISL dans des entités.Almemler où ( isl.kaytatrihi.date = = dbas && isl. kayittarihi.value.date <= dbit) Sélectionner isl);

Il donne une erreur: la date n'est pas prise en charge dans Linq aux entités ... Comment puis-je obtenir la date à Linq.


2 commentaires

Quel est le type de dbas et de DBIT? Est-ce que c'est datetime? Et qu'est-ce que kayittarihi.value est la propriété de navigation?


Essayez-le sans le .date et .value.date si votre type de données est DateTime (nullable).


3 Réponses :


1
votes

Si kayittarihi est une colonne de date dans dB (et dbas et dbit sont DateTime), utilisez: xxx


2 commentaires

Kayittarihi est DateTime mais j'ai besoin de date juste


Essayez ((nullable ) isl.kayittarihi.date) . Pas sûr comment SI Linq va réagir. Vous pouvez également modifier dbas et dbit (si elles sont sans la partie temporelle), vous ne devez donc pas extraire la valeur de la date de kayittarihi : < Code> ... où (isl.kayittarihi> = dbas && isl.kayittarihi .



-2
votes

La propriété .Date n'est pas prise en charge dans Linq aux entités (bien qu'elle puisse être prise en charge dans d'autres implémentations de LINQ).

Je me rends compte que vous ne voulez que comparer les dates, mais il n'y a pas de problème réel avec la comparaison des DateTimes si les valeurs DBAS et DBIT sont des date d'heure avec le temps 00:00:00. Vous devrez peut-être avoir à compenser les dates ou utiliser d'autres contrôles d'inégalité pour obtenir l'intervalle approprié, mais la comparaison fonctionnera au fur et à mesure de votre intention.

Je vais personnellement aller avec la solution de Jandek.


0 commentaires

30
votes

3 commentaires

Notez que l'entité fonctionne est désormais obsolète et System.Data.entity.dbfonctions doit être utilisée à la place.


MAINTENANT EF 6 EF 6. Les implémentations n'ont pas changé, il s'agit simplement d'une renommée des anciennes fonctions qui déléguent les nouvelles fonctions. Vous pouvez donc mettre à jour votre code existant en toute sécurité. Du message de validation: "Les classes avec les anciens noms ne font que déléguer aux nouvelles classes et sont également marquées comme obsolètes pour aider à déplacer les gens vers les nouvelles classes."


EntityFunctions.TruncateTetime est maintenant obsolète, utilisez plutôt dbfonctions.TruncateTetime