Qu'il y ait:Convertir des arbres d'expression
Expression<Func<Message, bool>> exp1 = x => x.mesID == 1;
Expression<Func<MessageDTO, bool>> exp2 = x => x.mesID == 1;
maintenant je dois passer à exp1 _db.Messages.where(exp1);
problème que j'ai est exp2, je dois convertir le type de message, toutes les propriétés sont les mêmes!
maintenant je fais ça:
var par = Expression.Parameter(typeof(Message));
var ex = (Expression<Func<Message, bool>>)Expression.Lambda(exp2.Body, par);
problème avec ce
est la paramter entrée est changée oui! mais le x dans le corps du lambda "x.mesID" est du type ancien.
de toute façon de changer tous les paramètres de type dans le corps aussi ou de modifier le paramètre d'entrée en dehors de refléter le corps aussi?
je suppose que c'est un gros problème que j'ai toujours avec LINQ, car entre les couches je ne peux pas passer les classes générées, car cela va faire des couches couplées, donc je dois faire des classes légères, maintenant comment utiliser une méthode comme _db.Messages.where(); de la couche busiess? !! tandis que la couche busniess ne sait rien sur le type de message, elle ne connaît que MessageDTO.
(exemple ajouté) –