asp.net web api - Managing AutoFac object creation for UnitOfWork -


i new architecture, in process of learning , designing application end end. have below architecture , using autofac manage object creation.

enter image description here

all businessobject contracts have been setup on webapi startup , startup can startup autofac configurations/modules.

i use unitofwork/repository pattern , resides beyond business layer, not want refer unitofwork in webapi cannot startup unitofwork otherwise.

can please give me inputs on should architecture/design/autofac unitofwork implementation?

in app_start register web project specific dependencies (controllers, etc). have static method in bl layer registers unit of work, repositories, etc. call static method in app_start when web dependencies being registered below:

//app_start (web project) var builder = new containerbuilder(); var config = globalconfiguration.configuration; myproject.businesslayer.registerdependancies.register(builder); <-- register unit of work here in static bl method builder.registercontrollers(typeof(mvcapplication).assembly); builder.registerapicontrollers(typeof(mvcapplication).assembly); builder.registermodule<autofacwebtypesmodule>(); builder.registerwebapifilterprovider(config); builder.registermodule(new autofacmodules.automappermodule()); builder.registermodule(new autofacmodules.log4netmodule());  var container = builder.build();  dependencyresolver.setresolver(new autofacdependencyresolver(container)); config.dependencyresolver = new autofacwebapidependencyresolver(container);   //static method in bl namespace myproject.businesslayer {     public static class registerdependancies     {         public static void register(containerbuilder builder)         {             builder.registertype<mycontext>().as<idatacontextasync>().instanceperlifetimescope();             builder.registertype<unitofwork>().as<iunitofworkasync>().instanceperlifetimescope();             builder.registergeneric(typeof(repository<>)).as(typeof(irepositoryasync<>)).instanceperlifetimescope();             builder.registerassemblytypes(typeof(businessservice).assembly).where(t => t.name.endswith("service")).asimplementedinterfaces().instanceperlifetimescope();         }     } } 

Comments

Popular posts from this blog

javascript - How to get current YouTube IDs via iMacros? -

c# - Maintaining a program folder in program files out of date? -

emulation - Android map show my location didn't work -