Aspnetcore2.0中Entityframeworkcore及Autofac的使用(三)(附Demo)((2018-12-04 10:08)
阿新 • • 發佈:2018-12-04
三,使用Autofac替換原有Ioc
首先安裝Autofac兩個外掛類庫:
Autofac
Autofac.Extensions.DependencyInjection
修改Startup.cs替換框架自帶IOC:
// This method gets called by the runtime. Use this method to add services to the container. //public void ConfigureServices(IServiceCollection services) //{ // services.AddMvc();// //配置上下文 // services.AddDbContext<test1Context>(options => options.UseSqlServer(Configuration.GetConnectionString("connstr"))); // //預設IOC實現注入 // services.AddScoped(typeof(BookService)); //} public IContainer ApplicationContainer { get; private set; }public IServiceProvider ConfigureServices(IServiceCollection services) { services.AddMvc(); //配置上下文 services.AddDbContext<test1Context>(options => options.UseSqlServer(Configuration.GetConnectionString("connstr"))); //建立Autofac構建器 varbuilder = new ContainerBuilder(); //反射獲取業務邏輯類 var assemblys = Assembly.Load("AspNetCore.Service"); builder.RegisterAssemblyTypes(assemblys) .Where(a => a.Name.EndsWith("Service")) .InstancePerLifetimeScope(); //移植到原有服務 builder.Populate(services); //替換預設容器 ApplicationContainer = builder.Build(); //Autofac接管預設IOC return new AutofacServiceProvider(ApplicationContainer); }
再次執行:
成功完成。
總結:
1.使用Nuget安裝類庫時需要與Net.Core的版本一致,否則會版本不相容產生錯誤。
2.每次生成實體與上下文類,記得要修改上下文類中的程式碼
3.這個程式只是依賴於類,沒有依賴介面,大家可以自行研究