CoreShop商城框架开启多租户(1)

发布于:2025-08-12 ⋅ 阅读:(13) ⋅ 点赞:(0)

CoreShop商城框架开启多租户

一、建立 租户表格。

-- 创建租户表
CREATE TABLE LiTenants (
    Id INT PRIMARY KEY IDENTITY,
    Code NVARCHAR(50) UNIQUE NOT NULL,
    Name NVARCHAR(100) NOT NULL,
    ConnectionString NVARCHAR(500),
    IsActive BIT DEFAULT 1,
    CreatedAt DATETIME2 DEFAULT GETDATE()
);

在 表格 SysUser、CoreCmsProducts、CoreCmsGoods 添加列
类似如下:、在这里插入图片描述
或者使用SQL添加列

-- 为现有表添加租户字段 
ALTER TABLE SysUser ADD TenantId INT NOT NULL DEFAULT 1;
ALTER TABLE CoreCmsProducts ADD TenantId INT NOT NULL DEFAULT 1;
ALTER TABLE CoreCmsGoods  ADD TenantId INT NOT NULL DEFAULT 1;

二、生成租户维护部分的代码
1。在后台管理平台生成代码,放到代码放按官网要求放到相应的目录中。
代码生成器文件的使用
代码生成器生成的文件是根据文件名和项目目录默认结构生成的。但实际操作中,根据不同的开发人员会有不同,我们来阐述下代码生成后的文件对应的位置及需要调整的内容。

Controller:对应9.App/CoreCms.Net.Web.Admin/Controllers/
Entity:对应3.Entity/CoreCms.Net.Model/Entities (最后一个文件内,可以根据需求创建文件夹,保持目录更好的阅读性)
Html:对应9.App/CoreCms.Net.Web.Admin/wwwroot/views/
IRepository:对应4.Repository/CoreCms.Net.IRepository/ (最后一个文件内,可以根据需求创建文件夹,保持目录更好的阅读性)
Repository:对应4.Repository/CoreCms.Net.Repository/ (最后一个文件内,可以根据需求创建文件夹,保持目录更好的阅读性)
IServices:对应3.Services/CoreCms.Net.IServices/(最后一个文件内,可以根据需求创建文件夹,保持目录更好的阅读性)
Services:对应3.Services/CoreCms.Net.Services/(最后一个文件内,可以根据需求创建文件夹,保持目录更好的阅读性)
2。 代码生成之后的调整
2。2。1 修改数据列表缓存的key名称,修改的文件在修改数据列表缓存的key名称在CoreCms.Net.Configuration目录之下的GlobalConstVars.cs文件中,在初始化函数中添加以下代码

    public static string LiTenants = "LiTenants"; //多租户表

2。2。2 修改前端html中对于添加,编辑,浏览详情页面的链接
本步骤特别重要,且容易出错,
我们打开代码生成中的index.html文件,找到代码中有3处 view(this.id).render的方法,将其中的 base/类名/edit base/类名/details base/类名/create 修改为对应路径名称即可。
1。

view(this.id).render('base/LiTenants/create', 

改上面的改为

 view(this.id).render('user/LiTenants/create', 

2。

       view(this.id).render('base/LiTenants/edit', { data: e.data }).done(function () {

改上面的代码为:

       view(this.id).render('user/LiTenants/edit', { data: e.data }).done(function () {

3。

 view(this.id).render('base/LiTenants/details', { data: e.data }).done(function () {

改上面的代码为:

 view(this.id).render('user/LiTenants/details', { data: e.data }).done(function () {

2。2。3 生成的代码出现 错误
在这里插入图片描述

原来 CreateAt 的类型出错,在数据库改成 datetime 类型,然后在实体类加上这个列的定义就可能以

三、添加新表格到菜单

1。将已经生成的代码挂靠到后端左侧面板路径。
2。配置好管理权限