nopCommerce_4.4功能实现详解-----第6章 通过自定义接口及其类和EFCroe件间件注入到Autofac容器中

“nopCommerce4.4”中使用的依赖注入中间件容器是.NetCore框架自带的内置依赖注入中间件容器,而“nopCommerce4.2 、nopCommerce4.3”使用的是 “Autofac”第三方依赖注入容器。实质上“nopCommerce4.2 、nopCommerce4.3”程序是通过是.NetCore框架自带的内置依赖注入中间件容器实例来包含“Autofac”第三方依赖注入容器实例中所注入的自定义接口及其类,即最终所有的依赖注入操作通过是放置在.NetCore框架自带的内置依赖注入中间件容器中的。“nopCommerce4.4” 程序直接放弃了“Autofac”第三方依赖注入容器做为中转对自定义接口及其类进行依赖注入操作,而选择直接使用是.NetCore框架自带的内置依赖注入中间件容器来对程序中所有自定义接口及其类进行依赖注入操作,这是“nopCommerce4.4” 程序的重大改变,它使程序的实现逻辑和具体操作相对于“nopCommerce4.2 、nopCommerce4.3”更加的简洁和简单。本人十分认同这种改变。

由于上面的所有示例程序都是基于.NetCore框架自带的内置依赖注入中间件容器定义实现,而“nopCommerce4.2 、nopCommerce4.3”基于“Autofac”第三方依赖注入容器定义实现的,如果示例程序如果支持“Autofac”第三方依赖注入容器则需要完成以下定义:

1、在Nop.Core中添加NuGet--Autofac.Extensions.DependencyInjection中间件包,使用程序支持“Autofac”第三方依赖注入容器。

2、根据“Autofac”第三方依赖注入容器修改Nop.Core.Infrastructure.NopEngine.RegisterDependencies方法的具体实现,使用该方法支持,批量把的自定义接口及其类实例注入到“Autofac”第三方依赖注入容器中。

0021、DbContextOptionsBuilderExtensions、NopDbStartup

3、DbContextOptionsBuilderExtensions类,该静态类,通过EFCore中的数据库上下文操作生成器实例中的方法调用指定的数据库接字符串,在程序与指定数据库连之间构建联接,并指定通过延迟加载的形式来实现,程序与指定数据库连之间的数据信息的交换操作。由于该类被定义为该静态类,所以该类实例的生命周期存在于程序的整个执行过程,即在一次程序完整的执行操作中,该类的静态实例保证了程序会与指定数据库连之间始终是联接着的。

4、使用Nop.Web.Framework.Infrastructure.Extensions.ServiceCollectionExtensions.AddNopObjectContext对.NetCore框架中的内置数据库依赖注入中间件方法进行自定义和扩展操作,通过该中间件扩展方法对EFCore中间件进行注册操作,实现EFCore中间件的接口及其实现类注入的内置依赖容器中,程序中其它类可以使用EFCore中间件实现类实例中的相应方法,来实现程序对数据库相应表的CURD操作。

5、NopDbStartup类是对“Startup”类中两个同名方法具体实现的迁移和扩展,该类主要是使用.NetCore框架中的内置数据库依赖注入中间件方法对EFCore中间件的接口及其实现类注入的内置依赖容器中,为EFCore中间件实现类的实例化提供支撑。

6、Nop.Web.Framework.Infrastructure.DependencyRegistrar.Register方法通过“Autofac”第三方依赖注入容器实例通过指定方法,把当前程序中存在的自定义接口及其实现类,注入到“Autofac”第三方依赖注入容器实例中。该方法对程序中所有的自定义接口及其实现类整合、批量的进行注入操作。把注入操作整合在一个方法中实现,是为了简化程序依赖注入的实现逻辑,使开发者能够集中的对依赖注入操作进行管理。例如:在程序在执行时,如果某个自定义实现类因没有注入操作而产生异常,那么只要在该方法中下定义该实现类及其接口的注入操作语句即可快速的解决该异常。

7、更改Controllers项目中的InstallController类中的具体实现,添加CustomerController类定义。在Nop.Web项目中添加App_Data文件夹和dataSettings.json,并对Program和Startup类进行更改使启动项,实现启动项对 “Autofac”第三方依赖注入容器进行支持。

在Nop.Web启动项中新建App_Data文件夹及文件dataSettings.json,dataSettings.json中以json格式持久化存储着当前程序与数据库进行交互操作的基本信息,这些信息包含:1、数据提供程序(在“nopCommerce4.2”中只指定只能使用“Microsoft SQL” 数据库软件作为当前程序的数据提供程序);2、数据库连接字符串等。“nopCommerce”程序是使用代码优先(CodeFirst)的方式,来实现当前程序与数据库互操作的,上述这些操作的主要目的是为了在程序第一次被执行后,根据dataSettings.json中的信息在数据库提供程序(用“Microsoft SQL”数据库)中自动新建相应的数据库,并根据程序中定义的实体类及其实体的映射规则类,在该数据库中自动生成相应的表,同时在表及其字段上体现出映射规则类所定义的规则。

8、以上的操作把自定义接口及其类和EFCroe件间件通过Autofac容器实例的特定方法注入到了Autofac容器中,按F5执行程序,会自动生数据库及其客户表,在默认页正常在浏览器上显示后,按“提交”按钮,一个指定客户的数据信息会被年持久化到客户表新的一行的中。

对第六章所有功能更为具体实现和注释见:21-05-20_Nop4.4(009_把自定义接口及其类和EFCroe件间件注入到Autofac容器中,执行程序自动生数据库及其客户表并在其中插入一行客户数据信息)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值