c# - Refactor model bound controller code to a class -


i have code below within controller. looks little messy here , i'd rather refactor jquery class. need database information in number of places within site , seems shame not re-use query.

is possible class? i'm unsure object return if code within class.

var profileviewmodel = (from da in db.table1                                 ra in db.table2.where(_ra => da.someid == _ra.someid).defaultifempty()                                 rg in db.table3.where(_rg => da.someid2 == _rg.someid2).defaultifempty()                                 re in db.table4.where(_re => da.someid3 == _re.someid3).defaultifempty()                                 da.username == model.musername                                 select new manageuseraccountsviewmodel                                 {                                     firstname = ra.firstname,                                     surname = ra.surname,                                     email = da.username,                                 }); 

first, want make dumb storage poco. lets call that.

public class dumbstoragepoco {      public string firstname {get;set;}      public string surname {get;set;}      public string email {get;set;} } 

now go ahead , create data-access-layer class this.

public class useraccountdata {     private readonly dbcontext _context;     public useracctiondata(dbcontext context) { _context = context; }      public get(string username) {         return da in _context.table1         ra in _context.table2.where(_ra => da.someid == _ra.someid).defaultifempty()         rg in _context.table3.where(_rg => da.someid2 == _rg.someid2).defaultifempty()         re in _context.table4.where(_re => da.someid3 == _re.someid3).defaultifempty()         da.username == username         select new dumbstoragepoco         {             firstname = ra.firstname,             surname = ra.surname,             email = da.username,          }); } 

you instantiate useraccountdata in controller, , call method username instance of dumbstoragepoco, pass viewmodel might like. if want further abstraction, may implement repository pattern around data access calls. extract interface useraccountdata , use dependency injection , inversion of control container create further abstract point controller accept proper interface in it's constructor, , make it's calls against expected return type.


Comments

Popular posts from this blog

authentication - Mongodb revoke acccess to connect test database -

r - Update two sets of radiobuttons reactively - shiny -

ios - Realm over CoreData should I use NSFetchedResultController or a Dictionary? -