J’essaie de convertir une application en EntityFrameWork codefirst. Mon code actuel est
ssortingng sFrom ="26/12/2013"; select * FROM Trans where CONVERT(datetime, Date, 105) >= CONVERT(datetime,'" + sFrom + "',105)
Et j’ai essayé
DateTime dtFrom = Convert.ToDateTime(sFrom ); TransRepository.Entities.Where(x =>Convert.ToDateTime(x.Date) >= dtFrom)
Mais j’ai une erreur comme ça
LINQ to Entities ne reconnaît pas la méthode ‘System.DateTime ToDateTime (System.Ssortingng)’
- Configuration de l’autorisation personnalisée avec ELMAH
- Un menu simple dans une application console
- Avoir un processus d’arrière-plan en cours d’exécution en continu sur un site Web MVC4
- Comment intercepter chaque personne essayant d’utiliser la fonction API en C #?
- Puis-je avoir le comportement de définition du propriétaire de mon formulaire WinForms à l’aide d’un hwnd / NativeWindow?
S’il vous plaît aider Merci d’avance
quand tu fais ça:
TransRepository.Entities.Where(x =>Convert.ToDateTime(x.Date) >= dtFrom)
LINQ to Entities ne peut pas traduire la plupart des méthodes Date .NET (y compris la conversion que vous avez utilisée) en SQL car il n’existe pas de code SQL équivalent. Ce que vous devez faire est de faire ci-dessous:
DateTime dtFrom = Convert.ToDateTime(sFrom ); TransRepository .Entities.ToList()//forces execution .Where(x =>Convert.ToDateTime(x.Date) >= dtFrom)
mais attendez que la requête ci-dessus récupère des données entières , et exécute. .Where
, dessus, vous ne voulez certainement pas,
simple soultion serait ceci , personnellement, j’aurais fait mon champ Entity comme DateTime
et db colonne comme DateTime
mais puisque, votre champ db / Date
entité est une chaîne, vous n’avez aucune autre option que celle de changer votre champ dans l’entité et de la firebase database en DateTime
, puis de faire la comparaison.
Pourquoi votre colonne de date est-elle une chaîne? Ne devrait-il pas s’agir d’un DateTime
?
Quoi qu’il en soit, si vous essayez d’effectuer des conversions à l’aide de fonctions .NET dans une instruction .Where sur un référentiel d’entités, vous obtiendrez cette erreur.
Votre meilleure option serait de changer cette colonne d’une chaîne à une DateTime et de continuer à partir de là. Si vous le faites, la déclaration .Where
serait:
DateTime dtFrom = Convert.ToDateTime(sFrom ); var something = TransRepository.Entities.Where(x => x.Date >= dtFrom) ;
/ j’ai eu un problème similaire: j’obtenais une chaîne de recherche et interrogeait une colonne datetime … voir la ligne 4 /
1)case "Admission_Date": 2)if (!Ssortingng.IsNullOrEmpty(SearchValue)) 3) { 4) DateTime dtFrom = Convert.ToDateTime(SearchValue); wards = from s in db.CORE_DATA_tbl where s.Admit_Date == dtFrom orderby s.ActionType, s.AdmissionLocation select s; } break;