c# - Implement searching in a generic repository with Linq Expressions -
i working entity framework , code first. here simple example show case.
public class personefmodel { public int id { get; set; } public string vorname { get; set; } public string nachname { get; set; } } public class efcontext : dbcontext { public dbset<person> personen { get; set; } }
to independent implementation of data access wrote abstraction layer repositories.
public class person { public int id { get; set; } public string vorname { get; set; } public string nachname { get; set; } } public interface igenericrepository<t> { int count { get; } void add(t item); void delete(t item); void update(t item); t getdata(int id); ienumerable<t> getdata(); ienumerable<t> getdata(int offset, int count); ienumerable<t> find(expression<func<t,bool>> predicate); ienumerable<t> find(ienumerable<expression<func<t, bool>>> predicates); }
person
, personefmodel
has 2 different types in order independent database models. there generic repository of type person dont know how implement find methods. can execute expressions against database depends on personefmodel , not on person.
so there way translate expression<func<person, bool>>
expression<func<personefmodel, bool>>
execute against database or on wrong path?
if following domain-driven design don't need create 2 separate objects represent person
. person
class poco , represents exact entity need in own code (you using code first after-all).
you introducing , unnecessary complexity. every time change person
class need change personefmodel
class , repository working need use kind of mapper (automapper) , map person
personefmodel
unnecessary 2 identical.
Comments
Post a Comment