niech będzie:Konwersja ekspresyjne drzewa
Expression<Func<Message, bool>> exp1 = x => x.mesID == 1;
Expression<Func<MessageDTO, bool>> exp2 = x => x.mesID == 1;
teraz muszę przejść EXP1 do _db.Messages.where(exp1);
problemu mam tylko EXP2, muszę konwertować typ do wiadomości, wszystkie właściwości są takie same!
teraz zrobić to:
var par = Expression.Parameter(typeof(Message));
var ex = (Expression<Func<Message, bool>>)Expression.Lambda(exp2.Body, par);
Problem z tym jest wejście paramter zostanie zmieniony tak! ale x w ciele lambda "x.mesID" jest starego typu.
jakikolwiek sposób na zmianę wszystkich typów parametrów w ciele lub zmianę parametru wejściowego w odwzorowaniu również odbija ciało?
Domyślam się, że jest to duży problem, który zawsze mam z LINQ, ponieważ pomiędzy warstwami nie mogę przekazać wygenerowanych klas, ponieważ spowoduje to połączenie warstw, więc muszę zrobić lekki klasy wag, teraz jak używać metody jak _db.Messages.where(); z warstwy busiess? !! podczas gdy warstwa busniess nic nie wie o typie wiadomości, tylko zna MessageDTO.
(dodany przykład) –