ShardingCore 7.0 版本发布

NCC ShardingCore 是一款 EntityFramework Core based 高性能、轻量级、分表分库、读写分离解决方案,具有零依赖、零学习成本、零业务代码入侵等特点。ShardingCore 7.0 已于近期发布。

从 ShardingCore 7.0 开始,启用版本号第二位来对应不同的 EFCore  版本,如 7.6.0.5 针对的是 EFCore 6.x 等。

变更日志

  • 添加对 EF Core 7.0 的支持

  • 移除 IShardingModelCacheOption,为默认缓存设置进行了建议配置

  • 添加模型并发等级,以便解决模型超时 BUG

  • 修正 FromSqlRaw 丢失 where 子句的 BUG #217

  • 修正分片路由为空时,join 未分片对象,导致分片对象被误认为非分片对象的 BUG

  • 修正集成使用 Z.EntityFramework.Plus 批量处理时报错的 BUG #179

  • 启用了全新的版本规范,版本号第二位对应 EF Core 版本号

  • 其他

重要提示

  • 升级如果不使用app.ApplictaionServices.UseAutoShardingCreate()将不会自动创建表任务;

  • 如果使用 IIS 代理,需要关闭应用程序池的固定回收,并将空闲回收设置为 0,否则 ShardingCore 的建表任务可能不会生效。

与其他开发框架的集成

目前,NCC ShardingCore 能与多款开发框架进行集成,开发者可以通过阅读项目文档,对照官方 DEMO 快速上手集成。ShardingCore 目前提供了以下开发框架的集成 DEMO:

  • 原生 EF Core (自不必说)

  • Volosoft AbpVNext

  • Volosoft AbpZero

  • Furion

  • WTM

详情可参考:

  • https://github.com/dotnetcore/sharding-core/tree/main/samples

  • https://www.cnblogs.com/xuejiaming/p/16450663.html

  • Volosoft AbpVNext Demohttps://github.com/xuejmnet/ShardingWithFramework/tree/main/abp/toapp

  • FurionDemohttps://github.com/xuejmnet/ShardingWithFramework/tree/main/furion

  • WTM Demohttps://github.com/xuejmnet/ShardingWithFramework/tree/main/wtm

现有系统接入注意事项

现有系统接入 ShardingCore,需要注意以下几点

批处理 Batch Ops

ShardingCore 支持 Ef Core 生态下的多个批处理框架,其中代表作比如:

  • Z.EntityFramework.Plus.EFCore

  • EFCore.BulkExtensions

默认的 EF Core  批处理基于当前 DbContext,如果开发者自定替换了 DbContext,则在集成 ShardingCore 时,需要注意批处理的兼容情况。ShardingCore 在默认情况下,ShellDbContext 带多个 ExecutorDbContextShellDbContext 会代理原有的查询,故而原有的批处理工作不能在 DbContext 中使用。

具体可参考 ShardingCore 批量操作文档:https://xuejmnet.github.io/sharding-core-doc/adv/batch-operate/

追踪 Tracking

默认情况下,ShardingCore 支持 EFCore 的追踪功能(即便是读写分离的情况下),支持包括 SelectAddUpdate 和 Remove,但无法获取 DbContext.ChangeTracker 下的方法。目前有两种解决方案:

  1. 重写 ChangeTracker,可以参考本项目的 ShardingChangeTracker,通过替换 IChangeTrackerFactory 来实现;

  2. 通过 AbstractShardingDbContext 下的 IShardingDbContextExecutor 获得当前 DbContext,而后进行相应的操作。

如果需要在 SaveChanges 时对一些变更新信息进行记录(如审计等),可通过重写带有 Boolean 参数的 SaveChanges 方法来达到目的:

public override int SaveChanges(bool acceptAllChangesOnSuccess)
{if (IsExecutor){// 审计操作// ChangeTracker.Entries().Where(xxx)}return base.SaveChanges(acceptAllChangesOnSuccess);
}

常见问题

使用外键报错

建议移除外键。参考:
https://github.com/dotnetcore/sharding-core/blob/main/samples/Sample.Migrations/RemoveForeignKeyMigrationsModelDiffer.cs

没有自动建表
  • 检查 IIS 设置,关闭应用程序池的固定回收,并将空闲回收设置为 0

  • 检查数据库连接对应的账户是否具有建表权;

  • 检查各路由建表的时间节点所对应的日志;

  • 选择开启 DoLogError,错误日志将详细输出。

不想在默认的时间点建表

修改对应的 CRON 表达式方法:*GetCronExpressions()*,并重写 IncrementMinutes 的值。

如何选择版本

ShardingCore 版本号中的第二位对应了 EF Core 的版本号,因此在选择 ShardingCore 时,请认准第二位版本号的编号;ShardingCore 第一位表示大版本号,第三位和第四位是小版本号,一般这三位数选择最新版本即可。

  1. EFCore 7.x 选择 ShardingCore 7.7.x.x

  2. EFCore 6.x 选择 ShardingCore 7.6.x.x

  3. EFCore 5.x 选择 ShardingCore 7.5.x.x

  4. EFCore 3.x 选择 ShardingCore 7.3.x.x

  5. EFCore 2.x 选择 ShardingCore 7.2.x.x

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搬运 centos7.2 apache 绑定二级目录 访问依然是apache页面

<VirtualHost *:80>ServerName xx.comDocumentRoot /var/www/html/xx</VirtualHost> 转载于:https://www.cnblogs.com/kiimi/p/8662490.html

django09: ORM以及CSRF(旧笔记)

ORM相当于程序里的数据库操作 ORM(一) https://www.cnblogs.com/liwenzhou/p/8688919.html ORM(二) https://www.cnblogs.com/liwenzhou/p/8660826.html CSRF:防止网站请求伪造&#xff0c;即钓鱼网 在Form表达添加&#xff1a;{% csrf_toker %}

vba发送邮件 签名_如何更改“从Windows 10的邮件发送”签名

vba发送邮件 签名The Windows 10 Mail app is a decent email client that allows you to add other email accounts in addition to your Microsoft accounts. You’ll notice, though, that any emails you write in the Mail app have a default signature. Windows 10 Mail…

JAVA_SE基础——24.面向对象的内存分析

黑马程序猿入学blog ... 接着上一章的代码&#xff1a; //车类 class Car{//事物的公共属性使用成员变量描写叙述。String name; //名字的属性 String color; //颜色属性 int wheel; //轮子数 //事物的公共行为使用函数描写叙述。 public void run(){ System.out.println(name&…

煮茶社区AVR开发板第二版[转]

原图:http://blossom.cnblogs.com/gallery/image/21891.html

[Kogel.Subscribe.Mssql]SQL Server增量订阅,数据库变更监听

此框架是SQL Server增量订阅&#xff0c;用来监听增删改数据库数据变更目前仅支持SQL Server&#xff0c;后续会支持MySQL和Oracle&#xff0c;Nuget上可以下载安装或者使用Nuget命令添加包dotnet add package Kogel.Subscribe.Mssql --version 0.0.0.1可以用来处理DB主从同步&…

java instanceof运算符

instanceof 运算符 该运算符用于操作对象实例&#xff0c;检查该对象是否是一个特定类型&#xff08;类类型或接口类型&#xff09;。 instanceof运算符使用格式如下&#xff1a; ( Object reference variable ) instanceof (class/interface type) 如果运算符左侧变量所指的对…

C# XML添加删除/SelectNodes/xpath

SelectNodes中的XPath //从当前节点的儿子节点中选择名称为 item 的节点。 SelectNodes("item")//从根节点的儿子节点中选择名称为 item 的节点。 SelectNodes("/item")// 从任意位置的节点上选择名称为 item 的节点。要重点突出这个任意位置&#xff0c;…

Python中*args 和**kwargs的用法

http://blog.csdn.net/chenjinyu_tang/article/details/8136841 好久没有学习python了&#xff0c;应为工作的需要&#xff0c;再次拾起python&#xff0c;唤起记忆。 当函数的参数不确定时&#xff0c;可以使用*args 和**kwargs&#xff0c;*args 没有key值&#xff0c;**kwar…

MFC载入JPG图片

## 1.定义画图函数 HRESULT CIPCamDlg::draw(char *lpImageFile, HWND hWnd, int nScrWidth, int nScrHeight) {HDC hDC_Temp::GetDC(hWnd);IPicture *pPic; IStream *pStm;BOOL bResult;HANDLE hFileNULL; DWORD dwFileSize,dwByteRead;hFileCreateFile(lpImageFile,GENERIC_R…

DLR 的扩展库 Dynamitey

.NET 在 CLR 对动态语言或者脚本语言的支持是通过DLR 完成的&#xff0c; Miguel de Icaza对 DLR 的特点概括如下&#xff1a;一个针对动态语言的共享式类型系统&#xff1b;一个共享的 AST&#xff0c;可以被语言开发人员用来创建新的动态语言&#xff1b;针对编译器开发人员的…

MFC 单选按钮Radio使用注意

使用MFC Radio时遇到问题&#xff1a;数据交换时出现断言崩溃框 定位于&#xff1a; 解决方法&#xff1a; 1、按CTRLD&#xff0c;保证同一组内的radio的tab序号是连续的&#xff1b; 2、同一组内&#xff0c;设置 radio1的属性&#xff1a; group、tabstop、auto均为true&am…

C# 字符串操作:split、substring、Format

1.split split可以使用多个字符切割。 "test[12]"切割后是3个字符串&#xff0c;最后一个为空。 string testString "test[12]";string[] testData testString.Split([,]);int testLength testData.Length;Console.WriteLine(testLength.ToString());…

flac格式转换mp3格式_MP3,FLAC和其他音频格式之间有什么区别?

flac格式转换mp3格式Digital audio has been around a very long time so there’s bound to be a plethora of audio formats out there. Here are some of the more common ones, what differentiates them, and what to use them for. 数字音频已经存在了很长时间&#xff…

Kubernetes:Flomesh 服务网格与多集群通信

Kubernetes 成功普及了容器集群的概念。许多用户已经在多个集群中部署应用&#xff0c;组织需要运行多个 Kubernetes 集群可能来自以下原因&#xff08;并非详尽列表&#xff09;&#xff1a;• 位置• 延迟&#xff08;尽可能在靠近客户的地方运行应用程序&#xff09;• 管辖…

Java四种线程池的使用

FixedThreadPool 由Executors的newFixedThreadPool方法创建。它是一种线程数量固定的线程池&#xff0c;当线程处于空闲状态时&#xff0c;他们并不会被回收&#xff0c;除非线程池被关闭。当所有的线程都处于活动状态时&#xff0c;新的任务都会处于等待状态&#xff0c;直到有…

袁永福软件行业从业经历

简化版》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 袁永福简历 袁永福&#xff0c;男&#xff0c;1980年生于江西省九江市都昌县&#xff0c;2001年南京东南大学动力工程系本科毕业。毕业后一直从事计算机软件开发工作&…

小程序之地图导航

同学们平常使用地图的时候应该都有注意到&#xff0c;当我们在一个应用中选择一个地址&#xff0c;打开一个地图&#xff0c;往往会有两种显示方式&#xff0c;一个是显示当前自己的位置&#xff1b;一个是显示对方&#xff0c;也就是目的地的位置&#xff1b;如下图&#xff1…

PS2019摄影后期处理(一)

高高手之路笔记 一、学习方法 内外兼修&#xff1a;技术会淘汰、更新&#xff0c;自己内在也要提高。 二、照片格式、色彩空间 JPEG TIFF RAW sRGB&#xff1a;互联网相关图片&#xff0c;电子设备 三、照片风格 自己定义照片格式&#xff0c;直接后期效果 相机自带工具&a…

mdnsresponder_什么是mDNSResponder.exe / Bonjour,如何卸载或删除它?

mdnsresponderYou are no doubt reading this article because you’ve noticed the mDNSResponder.exe process running in Task Manager, you don’t remember installing it, and it doesn’t show up in the Add/Remove programs in Control Panel. So what is it, and how…