0031 NopCustomerDefaults、CustomerRole、CustomerCustomerRoleMapping
NopCustomerDefaults类,程序通过该类所获取的常量,来限定被持久化到角色表中的角色是一个具有那些权限的角色,实际上这与初始化数据信息构成了双重角色权限的限定,以保证角色数据的正确持久化,而在实际开发中如果不态考虑程序的安全性和健壮性两者只保留其一即可。
CustomerRole类,一个客户角色实体类,通过该实体类及其属性成员实现当前程序与数据库中指定表之间的数据交互操作。
CustomerCustomerRoleMapping类,一个客户客户角色映射实体类,通过该实体类及其属性成员实现当前程序与数据库中指定表之间的数据交互操作。
0032 FluentMigratorExtensions
FluentMigratorExtensions类,通过第三方FluentMigrator数据交换中间件,该类通过一个指定的实体类,及其程序中所定义的级联约束关系类,对数据库的相应的多个表中映射这些级联约束关系和规则。
0033 CustomerRoleBuilder、CustomerCustomerRoleMappingBuilder
CustomerRoleBuilder类,该类通过对父类中同名方法进行覆写,对客户角色实体类、属性成员进行约束有关系和规则进行相应的定义,并把这些约束有关系和规则的定义,映射到相应的数据库中新生成的一个客户角色表及其字段上。
CustomerCustomerRoleMappingBuilder类,该类通过对父类中同名方法进行覆写,对客户客户角色映射实体类、属性成员进行约束关系和规则进行相应的定义,并把这些约束有关系和规则的定义,映射到相应的数据库中新生成的一个客户客户角色映射表及其字段上。
1、重构Nop.Data.Mapping.BaseNameCompatibility类,通过本次重构使用数据库中一些指定的表名和字段名由于程序中实体名和属性成员名,进行默认的映射生成,变更为由该类中所定义的常量字符串,进行映射生成。如果不考虑概率极低的名称冲突状况的发生,该类及其所有定义都可以被删除,并不影响程序的正常执行。
2、重构Nop.Data.Migrations.SchemaMigration类,通过本次重构在指定的数据库软件的相应数据库中自动生成客户角色表、客户客户角色映射表。
0034 IInstallationService、InstallationService
MigrationManager类,继承于IMigrationManager接口,由于“nopCommerce”程序的数据层中的所有定义,是按照CodeFirst模式进行定义的。所以该类中的定义操作主要用于在程序第一次被执行时,向指定的数据库软件相应数据库的一些表中,持久化一些由当前程序所定义的默认的数据信息值。
3、重构Nop.Web.Framework.Infrastructure.DependencyRegistrar.Register方法添加语句:
//通过.NetCore框架依赖注入容器实例的指定API方法,对安装服务具体实现类进行依赖注入操作。
if (!DataSettingsManager.IsDatabaseInstalled())
services.AddScoped<IInstallationService, InstallationService>();
4、重构Nop.Web.Controllers.InstallController类,通过本次重构在程序被执行时,会把当前程序中定义的所有默认数据值,持久化存储到指定数据库的一些表中。
5、按F5执行程序,在提交了数据库安装页面中的数据值后,会在指定数据库的一些表中持久化保存这些数据值。
对以上功能更为具体实现和注释见21-08-10_Nop_4.40.3(010_执行程序后,在指定数据库的一些表中持久化存储客户与角色的默认数据值)。