c# - How to write one read, insert, update, delete method that does the job for each database models? -
i had write 4 methods (read, insert, update, delete) for each model in mvc.
need know if there's better way write less code , use c# features interfaces, generic types , don't know ... etc.
, let's have these tables map corresponding models generated ado.net entity data model.
for simple crud logic, can use generic repository pattern. here example:
interface irepository<t> t: class { list<t> getall(); void add(t entity); void update(t entity); void remove(t entity); }
implementation entity framework (replace dbcontext context class):
class genericrepository<t>: irepository<t> t: class { public virtual list<t> getall() { using(var context = new dbcontext()) { return content.set<t>().tolist(); } } public virtual void add(t entity) { using(var context = new dbcontext()) { context.entry(entity).state = entitystate.added; context.savechanges(); } } public virtual void update(t entity) { using(var context = new dbcontext()) { context.entry(entity).state = entitystate.modified; context.savechanges(); } } public virtual void remove(t entity) { using(var context = new dbcontext()) { context.entry(entity).state = entitystate.deleted; context.savechanges(); } } }
all methods virtual can override them if necessary. can use repository directly (discouraged), or subclass specific type:
class userrepository: genericrepository<user> { // other query methods here }
Comments
Post a Comment