第5章 数据交换层之迁移功能性耦合的支撑实现

在Code-First模式下在选定数据库软件的指定数据库中自动生成表、字段及其约束规则,,需要对FluentMigrator中间件中的迁移方法进行显式的自定义扩展,从而实现指定数据库的初始化操作,所在Code-First模式下FluentMigrator中间件中的迁移方法的自定义扩展实现是必不可少的。

 

 

 

021 NopMigrationDefaults、UpdateMigrationType、SkipMigrationOnInstallAttribute、SkipMigrationOnUpdateAttribute、SkipMigrationAttribute、NopMigrationAttribute标记定义基础性支撑耦合

    NopMigrationDefaults类,根据该类及其属性成员的定义,为标记类定义提供支撑,同时通过标记类把该类中定义的常量值表持久化存储到数据库中的迁移信息表中。

    UpdateMigrationType枚举,当前程序选择该枚举实例中的一个枚举成员实例,来确认执行更新迁移操作时,所针对实体所对应的表。

    SkipMigrationOnInstallAttribute类,在当前程序第1次在选定的数据库软件中自动生成数据库、表、字段、约束规则及其所有的默认数据值时,被该标记类所标记的迁移类中所定义的表、字段、约束规则及其所有的默认数据值将不会被持久化到自动生成的数据库中。

    SkipMigrationOnUpdateAttribute类,如果在当前程序中实体的属性或默认数据值有改变,且需要通过迁移操作把这些改变持久化到相应的数据库中,被该标记类所标记的迁移类中所定义的表、字段、约束规则及其所有的默认数据值将不会被持久化到自动生成的数据库中(该标记类特别针对需要跳过第1次安装迁移定义)。

    SkipMigrationAttribute类,不管是数据库的第1次自动生成还是其后的实体及其默认数据库有所改变,被该标记类所标记的迁移类中所定义的表、字段、约束规则及其所有的默认数据值将不会被持久化到自动生成的数据库中。

    NopMigrationAttribute类,该类通过对基类构造方法的扩展,通过自定义规范对迁移类进行标记,该标记实例不但决定了迁移类,被调用的顺序,,同时“FluentMigrator.Runner”中间件通过该版本号,来获取相应的迁移类,并对其实例化;还会把迁移类标记实例中的相关数据信息持久化到数据库的迁移信息表中。

022 NopIndexConvention 、NopForeignKeyConvention、NopColumnsConvention、MigrationVersionInfo、NopConventionSet约束规则定义基础性支撑耦合

    NopIndexConvention类,该类为选定数据库软件的数据库指定表,自定义一个索引字段名字符的约束实例,为表的自动生成提供支撑。

    NopForeignKeyConvention类,该类为选定数据库软件的数据库指定表,自定义一个副键名字符串的约束实例,为表的自动生成提供支撑。

    NopColumnsConvention类,该类为选定数据库软件(这里只针对:PostgreSQL数据库软件的实现进行特殊定义)的数据库指定表中的指定字段,自定义约束实例,为表的自动生成提供支撑。

    MigrationVersionInfo类,根据该类及其属性成员的定义,在数据库自动生成相应的迁移信息表,同时把迁移标记中的版本号、描述信息、及其执行时间持久化到迁移信息表中。

    NopConventionSet类,该类通过其拷贝构造方法,实例化了选定的数据库软件数据库中的所有表及其字段在自动生成时,必须遵从的约束规则实例(自定义和第3方:FluentMigrator.Runner.Conventions), 在表及其字段的自动生成过程中会根据这些约束实例生成表及其字段,同时这些约束规则实例中的设置值,也会反映在自动生成的表及其字段上。

023 IMigrationManager 、MigrationManager、SchemaMigration、NopProcessorAccessor、INopDataProvider 迁移执行功能性支撑耦合

    IMigrationManager接口,继承于该接口的具体实现类,把当前程序中所定义的实体类及其属性成员,还有它们的映射规则,整合为迁移表达式实例,为在Code-First模式下,自动把实例生成相应的表提供支撑。

    MigrationManager类,继承于IMigrationManager接口,该类把当前程序中所定义的实体类及其属性成员,还有它们的映射规则,整合为迁移表达式实例,为在Code-First模式下,自动把实例生成相应的表提供支撑。

    SchemaMigration类,在当前程序第1次执行时,程序会按照该类所定义实体的调用顺序,在选定的数据库软件的数据库中,按照该顺序自动生成相应的表及其该表的约束规则及其所有的默认数据值。

注意:

    如果该类所定义实体的调用顺序发生改变,导致表的生动生成失败,从而让当前程序产生异常。

    NopProcessorAccessor类,使用第3方“FluentMigrator”数据交换中间件,支持多数据库软件中的数据库交换数据时,必须通过“IProcessorAccessor”接口实例(当前程序中有3个实例:Microsoft SQL Server数据库软件、Oracle MySql数据库软件、PostgreSQL数据库软件),才能支持多数据库软件中的数据库进行数据交换。

注意:

   如果第3方“FluentMigrator”数据交换中间件,只支持一个数据库软件,则不必须通过“IProcessorAccessor”接口实例。

    INopDataProvider接口,继承于该接口的具体实现类实现了选定的数据库件中的数据库连接、备份、还原和所有表的CURD操作,及其表中索引字段的重置。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值