Witam,
Z racji że odwołania do bazy stały się coraz bardziej rozległe i mało czytelne chciałbym wyodrębnić jedną metodę do pobierania obiektów, a w argumentach przesyłać
- co ma pobrać (jakie kolumny - select)
- przy jakich ograniczeniach ( where)
Udało mi się napisać ograniczenia i obecnie to wygląda tak :
public IEnumerable<CarDto> GetCars(Func<Cars,bool> condition)
{
using(var db = new ModelContext()){
var model = db.Cars.Where(condition).Select( i => new
{
Name = i.Name
Model = i.Model
FirstOwnerName = i.FirstOwner.Name
.......
.......
} ).AsEnumerable().Select( x=> new CarDto(x))
}
}
wywołanie:
.....
var cars = dao.GetCars(DBExpression.Where.NewCars);
....
Tych kolumn oczywiście jest więcej, i je również chciałbym wyodrębnić do metody podobnie jak warunki.
Czy mógłby ktoś podrzucić jakiś przykład jak to zrobić sprytnie i poprawnie ?
zacząłem pisac coś takiego :
public static List<Expression> BaseInformationSelector(){
var result= List<Expression>();
Expression<Func<Car,String>> x = (p) => p.FirstOwner.Name
result.Add(x);
Expression<Func<Car,Bool>> xx = (p) => p.isActive
result.Add(xx);
return result;
}
to niestety nie mogę takiej listy użyć w select :/