当前位置: 首页 > news >正文

.net 简单的数据库操作框架

介绍

SqlSugar是一款 老牌 .NET数据库操作框架,由果糖大数据科技团队维护和更新 ,Github star数仅次于EF 和 Dapper

优点: 简单易用、功能齐全、高性能、轻量级、服务齐全、有专业技术支持一天18小时服务

支持数据库:MySql、SqlServer、Sqlite、Oracle 、 postgresql、达梦、人大金仓

框架新功能

最新稳定版本5.0.2.8 ,发布后1个月时间NUGET下载量达到5000的版本,用户使用也相当满意

而在稳定版本的基础上又布了5.0.2.9版本

加入3大新功能

1. 配置查询

解决了大量字典表和简单就为取一个name 就要写联表的问题,让单表查询解决一切

2.多租户+仓储+自动分配

3.行转列

1、配置查询

解决了大量字典表和简单就为取一个name 就要写联表的问题,让单表查询解决一切

字典表我相信大家都全用到,他们可以方便的存储性别、学历、岗位等 一串数据 并进行TypeId进行区分

1.1 创建测试数据

创建一个字典实体

1

2

3

4

5

6

publicclassDataDictionary

{

publicstringCode {get;set; }

publicstringName {get;set; }

publicstringType {get;set; }

}

创建字典表并向里面插入测试数据

1

2

3

4

5

6

7

8

9

10

11

vardb = GetInstance();

List<DataDictionary> datas =newList<DataDictionary>();

datas.Add(newDataDictionary() { Code="1", Name="男",Type="sex"});

datas.Add(newDataDictionary() { Code ="2", Name ="女", Type ="sex"});

datas.Add(newDataDictionary() { Code ="1", Name ="南通市", Type ="city"});

datas.Add(newDataDictionary() { Code ="2", Name ="苏州市", Type ="city"});

datas.Add(newDataDictionary() { Code ="1", Name ="江苏省", Type ="province"});

datas.Add(newDataDictionary() { Code ="2", Name ="湖南省", Type ="province"});

db.CodeFirst.InitTables<DataDictionary>();//这样就能根据实体建表了

db.Insertable(datas).ExecuteCommand();//这样就能把数据插进数据库了<br>

在建一个Person表

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

publicclassPerson

{

//数据库字段

[SqlSugar.SugarColumn(IsPrimaryKey =true,IsIdentity =true)]

publicintId {get;set; }

publicstringName {get;set; }

publicintSexId {get;set; }

publicintCityId {get;set; }

publicintProvinceId {get;set; }

//非数据库字段

[SqlSugar.SugarColumn(IsIgnore =true)]

publicstringSexName {get;set; }

[SqlSugar.SugarColumn(IsIgnore =true)]

publicstringCityName {get;set; }

[SqlSugar.SugarColumn(IsIgnore =true)]

publicstringProviceName {get;set; }

}

1.2 传统字典联表实现缺点

如果我们要将Person中的非数据字典查询出来那么我们就需要写有2种实现方式

1.连表或者子查询 (缺点 写起来很浪费时间)

2.将字典存到内存,通过内存赋值 (缺点 字典表超过1000条以上性能很差 ,并且不能排序,或者LIKE)

下面介绍通过SqlSugar的配置查询解决上2面个难题

1.3 配置表简化字典联表

配置字典表

1

2

3

4

5

6

7

8

9

if(!db.ConfigQuery.Any())

{

vartypes= db.Queryable<DataDictionary>().Select(it => it.Type).Distinct().ToList();

foreach(vartypeintypes)

{

db.ConfigQuery.SetTable<DataDictionary>(it => it.Code, it => it.Name, type, it => it.Type == type);

}

//如果其中Code都是唯一值可以按 1.4中的用法使用循环都不要

}

配置完我们查询就会很方便了

1

2

3

4

5

6

7

8

9

varres=db.Queryable<Person>().Select(it =>newPerson()

{

Id=it.Id.SelectAll(),

SexName=it.SexId.GetConfigValue<DataDictionary>("sex"),

ProvinceName = it.ProvinceId.GetConfigValue<DataDictionary>("province"),

CityName = it.CityId.GetConfigValue<DataDictionary>("city"),

}).ToList();

//也支持支持写在Where或者Orderby

1.4 简单联表查询也可以配置

1

2

3

4

5

6

db.ConfigQuery.SetTable<Order>(it => it.Id, it => it.Name);//配置Order<br>

varlist3 = db.Queryable<OrderItem>().Select(it =>newOrderItem

{

ItemId = it.ItemId.SelectAll(),

OrderName = it.OrderId.GetConfigValue<Order>()//查询的时候直接用

}).ToList();

总结:配置表查询的方式可以大大降低重复联表问题,并且配置好后基本就不要写JOIN了

2、多租户+仓储+自动分配

SqlSugar多租户是通过ConfigId进行识别连接哪个库,新版本添加了实体配置ConfigId

1

2

3

4

5

6

7

8

9

10

11

[TenantAttribute("1")]

publicclassC1Table

{

publicstringId {get;set; }

}

[TenantAttribute("2")]

publicclassC2Table

{

publicstringId {get;set; }

}

下面我们仓储就可以通过实体配置自动识别是连接哪个库

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

publicclassRepository<T> : SimpleClient<T>whereT :class,new()

{

publicRepository(ISqlSugarClient context =null) :base(context)//注意这里要有默认值等于null

{

if(context ==null)

{

vardb =newSqlSugarClient(newList<ConnectionConfig> {

newConnectionConfig()

{

ConfigId="1",

DbType = SqlSugar.DbType.SqlServer,

IsAutoCloseConnection =true,

ConnectionString = Config.ConnectionString

},

newConnectionConfig()

{

ConfigId="2",

DbType = SqlSugar.DbType.SqlServer,

IsAutoCloseConnection =true,

ConnectionString = Config.ConnectionString2

}

});

base.Context = db;

varconfigId =typeof(T).GetCustomAttribute<TenantAttribute>().configId;

db.ChangeDatabase(configId);

}

}

/// <summary>

/// 扩展方法,自带方法不能满足的时候可以添加新方法

/// </summary>

/// <returns></returns>

publicList<T> CommQuery(stringsql)

{

//base.Context.Queryable<T>().ToList();可以拿到SqlSugarClient 做复杂操作

returnbase.Context.Queryable<T>().Where(sql).ToList();

}

}

新版本还添加了切换仓储功能

1

2

3

4

5

6

7

8

9

10

11

12

publicclassC1Service : Repository<C1Table>

{

publicvoidTest()

{

base.AsTenant().BeginTran();

base.GetList();//调用内部仓储方法

base.ChangeRepository<Repository<C2Table>>().GetList();//调用外部仓储

base.AsTenant().CommitTran();

}

}

http://www.zskr.cn/news/1483097.html

相关文章:

  • 2026年 玻璃钢防腐/三布五油/重防腐施工厂家推荐:专业防腐蚀工程结合陶瓷颗粒防滑路面、泡菜池及无震动止滑坡道公司精选! - 品牌发掘
  • 2026 宁波防水补漏服务商口碑测评榜单|全屋渗漏维修机构优选指南(6 月最新) - 宅安选房屋修缮
  • 《jQuery 过滤》
  • 图像矢量化神器:3分钟让PNG/JPG变身清晰SVG的终极指南
  • 2026净水设备厂家选型指南:重力式无阀滤池、一体化净水器、一体化地埋式污水处理设备装置、全自动净水器厂家、全自动净水器推荐选择指南 - 优质品牌商家
  • AI Agent Harness Engineering 融资策略:创业公司如何获得资本青睐
  • 2026年 修补乳液/丙烯酸乳液厂家推荐榜单:高粘附力、强耐候性的优质品牌与技术先锋深度解析 - 品牌发掘
  • 怎样安全解锁中兴光猫设备:专业网络设备管理工具完全指南
  • 网红弧形GRG背景墙技术解析与行业选型参考:GRG艺术造型构件/中庭穹顶GRG定制/别墅轻奢GRG造型/办公室大堂GRG墙面造型/选择指南 - 优质品牌商家
  • 双金属耐磨管技术解析与江苏昱杨制造实力深度拆解:江苏昱杨机械联系、双金属灰水耐磨管、双金属耐磨直管、电厂输粉双金属耐磨管选择指南 - 优质品牌商家
  • 3分钟搞定全国高铁数据!这个开源工具让你轻松掌握列车时刻表 [特殊字符]
  • 2026 合肥防水补漏服务商口碑测评榜单|全屋渗漏维修机构优选指南(6 月最新) - 宅安选房屋修缮
  • 2026年 环氧地坪漆厂家推荐榜:环氧树脂地坪漆/无溶剂环氧地坪漆/水性环氧地坪漆最新精选品牌 - 品牌发掘
  • 嵌入式小白第三站:UART、I2C、SPI、ADC 怎么学?从传感器读数到完整小项目
  • 数字频率计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 2026 西安防水补漏服务商口碑测评榜单|全屋渗漏维修机构优选指南(6 月最新) - 宅安选房屋修缮
  • 2026年6月市面上广州酒回收门店怎么选择推荐榜,老酒/名酒/洋酒回收机构选择指南 - 海棠依旧大
  • VidDown 使用介绍:一个免费、本地化的在线工具集
  • 2026年智能数据治理平台排行:大模型数智化赋能/工厂设备数智巡检/政务社区数智助手/数据治理安全审计/数智物流保险平台/选择指南 - 优质品牌商家
  • 2026年6月口碑好的苏州板式办公桌厂家选择推荐榜:板式办公桌、实木办公桌、钢制办公桌品牌选择指南 - 海棠依旧大
  • 3分钟解锁中兴光猫隐藏功能:zteOnu工具终极指南
  • 比利时银行业网络钓鱼欺诈赔偿规则与综合防御研究
  • YouTube推荐系统技术拆解:多目标优化与实时反馈闭环
  • 能让不同架构的gpu一起训练 跨芯片统一、异构混合训练、自动并行调优
  • PotPlayer字幕实时翻译:突破语言障碍的终极技术方案
  • 2026年6月口碑好的杭州盆景租摆公司怎么选推荐榜,办公室/酒店/园区/家居盆景租摆公司选择指南 - 海棠依旧大
  • 2026年 名酒回收/老酒回收/白酒回收服务:茅台、五粮液、洋酒、虫草、片仔癀上门现金回收公司专业评估报告 - 品牌发掘
  • 2026年川渝滇二手设备回收服务商排行及联系指南:远珍二手电器经营部联系/宜宾二手空调回收/宜宾办公用品回收/宜宾办公设备回收/选择指南 - 优质品牌商家
  • 如何快速跳过FF14副本动画:终极ACT插件配置指南
  • 零基础看懂字画真假!普通人也能学会肉眼鉴伪 - 深鉴新闻