: Que no hayaConvertir árboles de expresión
Expression<Func<Message, bool>> exp1 = x => x.mesID == 1;
Expression<Func<MessageDTO, bool>> exp2 = x => x.mesID == 1;
ahora tengo que pasar a exp1 _db.Messages.where(exp1);
problema es que sólo tengo exp2, i necesidad de convertir el tipo de mensaje, Todas las propiedades son las mismas!
ahora hago esto:
var par = Expression.Parameter(typeof(Message));
var ex = (Expression<Func<Message, bool>>)Expression.Lambda(exp2.Body, par);
problema con esto es el parametro de entrada se cambia sí! pero la x dentro del cuerpo de la lambda "x.mesID" es del tipo antiguo.
cualquier forma de cambiar todos los parámetros escriba también en el cuerpo o cambie el parámetro de entrada para que refleje el cuerpo también?
supongo que este es un gran problema que siempre tengo con LINQ, ya que entre las capas no puedo pasar las clases generadas, ya que esto hará capas acopladas, así que tengo que hacer clases ligeras, ¿cómo utilizo un método? como _db.Messages.where(); de la capa de busiess? !! mientras que la capa de busniess no sabe nada acerca del tipo de mensaje, solo conoce MessageDTO.
(ejemplo añadido) –