How to add db context not in ConfigureServices method ASP.NET Core -
is there posibility add db context in external class/method "on fly?" when run application, there no connection string, need generate db after typing information(server, dbname, ect)
one way use factory pattern, i.e. creating service used create new instances of context.
here example, not final solution , need adapt needs should give idea of technique:
public interface idbcontextfactory { dbcontext createdbcontext(string connectionstring); } public class dbcontextfactory : idbcontextfactory { public dbcontext createdbcontext(string connectionstring) { return new dbcontext(connectionstring); } } then in asp.net core, can register context factory , inject in controller:
services.addsingleton<idbcontextfactory, dbcontextfactory>(); public class somecontroller { private idbcontextfactory contextfactory; public somecontroller(idbcontextfactory contextfactory) { this.contextfactory = contextfactory; } public iactionresult index() { using(var db = contextfactory.createdbcontext("your connection string")) { //get data } return view(); } } instead of creating dbcontext combine factory pattern unit of work , / or repository patterns better separate concerns , make sure dispose context, etc...
Comments
Post a Comment