ublic class UnitJsonTest
{
[SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
publicint Id { get; set; }
[SqlSugar.SugarColumn(ColumnDataType ="varchar(max)", IsJson = true)]
public Order Order { get; set; }
publicstring Name{get;set;}
}
Db.Insertable(new UnitJsonTest() { Name="json1",Order = new Order { Id = 1, Name = "order1" } }).ExecuteCommand();
var list = Db.Queryable<UnitJsonTest>().ToList();
实践功能4:分库+分表+多库事务
1、动态创建数据库
下面代码将会创建db1和db2数据库
string conn = "server=.;uid=sa;pwd=haosql;database={0}";
var db = new SqlSugarClient(new ConnectionConfig()
{
DbType = SqlSugar.DbType.SqlServer,
ConnectionString = string.Format(conn, "db1"),
InitKeyType=InitKeyType.Attribute
});
db.DbMaintenance.CreateDatabase();
var db2 = new SqlSugarClient(new ConnectionConfig()
{
DbType = SqlSugar.DbType.SqlServer,
ConnectionString = string.Format(conn, "db2")
});
db2.DbMaintenance.CreateDatabase();
var list= db.Queryable<Order>().AS("Order1").ToList();//查询Order1的表
//增 删 改用法和查询一样 Inasertable().AS Deleteable().AS Updateable().As
4、跨库联表查询
var list = db.Queryable<Order, OrderItem, Custom>((o, i, c) => o.Id == i.OrderId&&c.Id == o.CustomId)
.AS("xx.order")
.AS<OrderItem>("yy.OrderItem")
.AS<Custom>("zz.Custom")
.Select<ViewOrder>()
.ToList();
5、多切换
SqlSugarClient db = new SqlSugarClient(new List<ConnectionConfig>()
{
new ConnectionConfig(){ ConfigId="1", DbType=DbType.SqlServer,
ConnectionString=Config.ConnectionString,InitKeyType=InitKeyType.Attribute,IsAutoCloseConnection=true },
new ConnectionConfig(){ ConfigId="2", DbType=DbType.MySql,
ConnectionString=Config.ConnectionString4 ,InitKeyType=InitKeyType.Attribute ,IsAutoCloseConnection=true}
});
//库1try
{
db.BeginTran();
db.Deleteable<Order>().ExecuteCommand();
db.ChangeDatabase("2");//使用库2
db.Deleteable<Order>().ExecuteCommand();
db.CommitTran();
}
catch
{
db.RollbackTran();
}
实践功能5:无限级别的级联插入
使用sqlsugar只需要配置主键,不需要实体配置任何外键关系就能实现级联插入
//有自动赋值的外键
db.Insertable(new Order()
{
Name = "订单 1",
CustomId = 1,
Price = 100,
CreateTime = DateTime.Now,
Id = 0,//自增列
Items = new List<OrderItem>() {
new OrderItem(){
CreateTime=DateTime.Now,
OrderId=0,//需要自动获取订单的自增列
Price=1,
ItemId=1
}
}
})
.AddSubList(it => it.Items.First().OrderId )//设置item表的OrderId等于订单自增列 .ExecuteReturnPrimaryKey();
SqlSugar 发布,简单易用的开源 ORM 框架
介绍
sqlsugar已经在第一时间完美兼容.NET5并且已经有人在使用了, 很多人都担心用了开源框架遇到问题无法解决,导致前功尽弃,使用SqlSugar你大可放心,除了有详细文档和几年的大量用户积累,
SqlSugar还提供了完整的服务,让您的项目没有后顾之忧
优点: 简单易用、功能齐全、高性能、轻量级、服务齐全
支持数据库:MySql、SqlServer、Sqlite、Oracle 、 postgresql、达梦、人大金仓
免费服务
1、基本用法咨询
2、BUG提交
3、采纳建议和需求
4、代码开源 可用于任何商用项目 不收取费用 下载
5、qq交流群讨论 995692596(空闲) 654015377(1800/2000 拥挤) 726648662((已满) 225982985 (已满)
实践技巧1 :性能监控
通过该功能我们能轻松的监控到执行超过1秒的sql,并且可以拿 到他的 C#代码文件和行数 和方法
实践功能2:数据变化监控
当我们的代码删了哪具体的代码,添加了具体的代码,修改了哪个列如果没有强大的日志功能将你将无法找回,SqlSugar可以轻松实现高安全级别的数据日志
实践功能3:JSON类型完美支持
SqlSugar不但支持PgSql的Json array类型外,哪怕你的数据库没有JSON类型一样可以使用JSON对象进行存储
实践功能4:分库+分表+多库事务
1、动态创建数据库
下面代码将会创建db1和db2数据库
2、动态建表
3、实体增、删、查、改
4、跨库联表查询
5、多切换
实践功能5:无限级别的级联插入
使用sqlsugar只需要配置主键,不需要实体配置任何外键关系就能实现级联插入
实践功能6:全自动二级缓存
当我们用到Redis等操作时,更新数据时需要及时去清理缓存会变的非常复杂,SqlSugar支持多表缓存,并且更新其中一张表并且能够清除缓存
二缓缓存是将结果集进行缓存,当SQL和参数没发生变化的时候从缓存里面读取数据,减少数据库的读写操作
删除数据同时更新缓存,插入用和更新也一样的用法
实践功能7:支持对数据库的多种操作
实践功能8:动态SQL完美防注入方案
var orderField = "order';drop table order"; var orderInfo= db.EntityMaintenance.GetEntityInfo<Order>(); if (orderInfo.Columns.Any(it => it.DbColumnName != orderField)) { throw new Exception("请不要非法注入"); } db.Queryable<Order>().OrderBy(orderField).ToList();SqlSugar一直在努力的变的更好,所有功能都是来自客户并且经受过长期的用户实践,为了能够给我更多动力
原码下载: https://github.com/sunkaixuan/SqlSugar
https://gitee.com/sunkaixuan/SqlSugar