mysql多租户schema复制,Asp.net core下利用EF core实现从数据实现多租户(3): 按Schema分离 附加:EF Migration 操作...

本文介绍了如何在ASP.NET Core项目中,利用EF Core实现多租户数据隔离,特别是按照数据库Schema进行分离。文章详细阐述了在引入MSSqlServer后,对`MultipleTenancyExtension`进行的修改,包括`AddDatabase`方法的调整,以及添加了`AddTenantDatabasePerSchema`方法来支持按Schema分离。此外,还修改了`TenantSqlConnectionResolver`和`StoreDbContext`的相关方法以实现Schema分离,并展示了在`Startup`类中配置Services的过程。
摘要由CSDN通过智能技术生成

前言

前段时间写了EF core实现多租户的文章,实现了根据数据库,数据表进行多租户数据隔离。

今天开始写按照Schema分离的文章。

其实还有一种,是通过在数据表内添加一个字段做多租户的,但是这种模式我不打算讲了。

如果大家看了文章感觉完全衔接不上,可以先看看前面的系列文章:

关于EF core自动迁移:

之前的文章有朋友留言,觉得EF core不使用自动迁移就偏离了EF core的设计初衷。其实我觉得技术是实施的手段,而不是束缚项目的绊脚石。

1. 首先EF core并不是只有code first模式,

2. 其次EF core对db first模式支持很好,对于一些经历几年发展的项目会更加友好,因为对旧数据库进行O/R不是1,2周可以完成的,

3. 再次在以往的EF migration经验中,即使项目完全按照code first模式发展,但实际上更新数据库的并不是通过的Web项目,而是通过一个控制台,里面包含了Migration文件、数据迁移、结构校验数据校验。

这个控制台,一般通过CI/CD执行或手动执行。这是由于数据量、系统结构(例如多租户等)决定的。

所以,EF core的自动迁移不是这个系列文章的主线主分支

如果阁下想参考自动迁移的实施步骤,欢迎查看我的另一篇文章,是根据本文背景实现的自动迁移实施步骤:

实施

项目介绍

本项目是用系列文章的主分支代码进行修改的。目前项目主要支持使用MySql,通过分库,分表实现多租户。

本文需要实现分Schema,MySql不能实现,所以引入了MSSqlServer。

项目依赖

1. .net core app 3.1。在机器上安装好.net core SDK, 版本3.1

2. Mysql. 使用 Pomelo.EntityFrameworkCore.MySql 包, 版本3.1.1

3. MS Sql Server. 使用 Microsoft.EntityFrameworkCore.SqlServer 包,版本3.1.1  (本文新增的依赖)

3. EF core,Microsoft.EntityFrameworkCore, 版本3.1.1。这里必须要用3.1的,因为ef core3.0是面向.net standard 2.1.

实施步骤

1. 由于我们引入了MsSql,所以要对 MultipleTenancyExtension 进行修改,对立面的所有方法都要添加db类型进行传参。

修改 AddDatabase 方法,立面需要对sql server和MySql进行判断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值