1. 程式人生 > >Aspnetcore2.0中Entityframeworkcore及Autofac的使用(三)(附Demo)((2018-12-04 10:08)

Aspnetcore2.0中Entityframeworkcore及Autofac的使用(三)(附Demo)((2018-12-04 10:08)

三,使用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構建器 var
builder = 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.這個程式只是依賴於類,沒有依賴介面,大家可以自行研究