YESWEB业务模块中指定系统表


需求背景

YESWEB开发业务模块过程中模式都是分帐套的,一般情况下只是操作自己业务模块下的表,现在有个需求,业务模块中,有个通用配置,需要放到系统表中,这样一次配置所有账套都可以使用,如果不放系统表的话,每个账套都需要配置一次,并且如果修改,每个账套都要重复修改,很是麻烦,如果能在业务模块中创建系统数据库表,这样就简单多了,就能在系统库中做配置,然后所有业务账套都能使用这个配置

三个数据库表

Deng_Spec:设备规格表,将来所有业务账套都会使用这些规格,希望放入 系统数据库不分账套

Deng_SpecDetail:设备规格明细表,同设备规格表,希望放入 系统数据库不分账套

Deng_DeviceRegister:设备注册表,不同业务账套会注册不同的设备序列号,但规格都是统一的,希望放入 业务数据库库分账套

解决方案

新建业务模块 YESWEB.Module.Deng 

生成设备注册表 Deng_DeviceRegister 的实体

 

新建业务模块的系统库相关操作项目 YESWEB.Module.DengSystemDB

新建一个业务模块,取名 YESWEB.Module.DengSystemDB  代表 业务模块Deng的 系统数据库 相关

生成规格表 Deng_Spec 和规格明细表 Deng_SpecDetail 实体

修改 DBMergeProvider.cs 中的 DBType 为 EnumDBType.System

修改后:

using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;
using YESWEB.Core;
using YESWEB.Core.DBMerge;

namespace YESWEB.Module.DengSystemDB
{
    public class DBMergeProvider : IDBMerge
    {
        public EnumDBType DBType => EnumDBType.System;

        public void DoDBMigrate(ConnectionStrItem connItem)
        {
            using (var defaultEntities = new EntitiesContext(connItem))
            {
                /*
                不过数据库model有改动的话需要先执行下 add-migrate xxx 命令,然后每次运行程序GetPendingMigrations()就会检测有无更新,有的话自动迁移。
               GetPendingMigrations方法官方文档说明  https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.entityframeworkcore.relationaldatabasefacadeextensions.getpendingmigrations?view=efcore-2.1
                */
                if (defaultEntities.Database.GetPendingMigrations().Any())
                {
                    defaultEntities.Database.Migrate();
                }
            }
        }
    }
}
GarsonZhang www.yesdotnet.com

 因为我们只是用 YESWEB.Module.DengSystem.DB 提供的 实体模型,具体的业务代码我们还是要写入YESWEB.Module.Deng 的,在 YESWEB.Module.Deng 项目中添加 YESWEB.Module.DengSystemDB 的 项目引用

 

 

这样我们就完成了业务模块中系统数据库表的设置,如果表要放在 系统数据库,我们就把模型添加到项目 YESWEB.Module.DengSystemDB 中,如果表要放在 业务账套数据库 中,则还和以前一样,放到项目 YESWEB.Module.Deng

 

最后测试的时候别忘了生成数据库迁移脚本

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
YES开发框架
上一篇:Style格式参考
评论列表

发表评论

评论内容
昵称:
关联文章

YESWEB业务模块指定系统
业务模块访问系统
YESWEB第三方业务模块数据库配置
YESWin winform开发框架 新建一个业务模块项目
业务模块添加并引用静态资源
业务模块特殊URL配置
YESWin Winform开发框架 业务模块项目模板制作
YESWEB数据库模型数据库补丁排除特定
ABP vNext-模块
模块维护
git仓库子模块(submodule)项目的实战应用
YESWEB开发框架API无法生成迁移脚本
sql server系统详细说明 之 sys.sql_modules
sql server系统详细说明 之 sys.system_objects
sql server系统详细说明 之 sys.system_views
sql server系统详细说明 之 sys.all_objects
sql server系统详细说明 之 sys.objects
sql server系统详细说明 之 sys.sql_expression_dependencies
YESWEB接口日志记录
yesweb-libs/utils介绍