oracle 121541,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#代码文件和行数 和方法

SqlSugarClient db = new SqlSugarClient(newConnectionConfig()

{

DbType=DbType.SqlServer,

ConnectionString=Config.ConnectionString,

InitKeyType=InitKeyType.Attribute,

IsAutoCloseConnection= true});

db.Aop.OnLogExecuted= (sql, p) =>{//执行时间超过1秒

if (db.Ado.SqlExecutionTime.TotalSeconds > 1)

{//代码CS文件名

var fileName=db.Ado.SqlStackTrace.FirstFileName;//代码行数

var fileLine =db.Ado.SqlStackTrace.FirstLine;//方法名

var FirstMethodName =db.Ado.SqlStackTrace.FirstMethodName;//db.Ado.SqlStackTrace.MyStackTraceList[1].xxx 获取上层方法的信息

}

};

实践功能2:数据变化监控

当我们的代码删了哪具体的代码,添加了具体的代码,修改了哪个列如果没有强大的日志功能将你将无法找回,SqlSugar可以轻松实现高安全级别的数据日志

db.Aop.OnDiffLogEvent = it =>{var editBeforeData = it.BeforeData;//操作前记录 包含: 字段描述 列名 值 表名 表描述

var editAfterData = it.AfterData;//操作后记录 包含: 字段描述 列名 值 表名 表描述

var sql =it.Sql;var parameter =it.Parameters;var data = it.BusinessData;//这边会显示你传进来的对象

var time =it.Time;var diffType=it.DiffType;//enum insert 、update and delete//Write logic

};

//添加

db.Insertable(new Student() { Name = "beforeName"})

.EnableDiffLogEvent(new { title="我是插入"}) //启用日志并添加业务对象

.ExecuteReturnIdentity();

//修改

db.Updateable(newStudent()

{

Id=id,

CreateTime=DateTime.Now,

Name= "afterName",

SchoolId= 2})

.EnableDiffLogEvent() //启动日志

.ExecuteCommand();

//删除

db.Deleteable(id)

.EnableDiffLogEvent()//启动日志

.ExecuteCommand();

实践功能3:JSON类型完美支持

SqlSugar不但支持PgSql的Json array类型外,哪怕你的数据库没有JSON类型一样可以使用JSON对象进行存储

ublic classUnitJsonTest

{

[SqlSugar.SugarColumn(IsPrimaryKey= true, IsIdentity = true)]public int Id { get; set; }

[SqlSugar.SugarColumn(ColumnDataType="varchar(max)", IsJson = true)]public Order Order { get; set; }public string Name{get;set;}

}

Db.Insertable(new UnitJsonTest() { Name="json1",Order = new Order { Id = 1, Name = "order1"} }).ExecuteCommand();var list = Db.Queryable().ToList();

实践功能4:分库+分表+多库事务

1、动态创建数据库

下面代码将会创建db1和db2数据库

string conn = "server=.;uid=sa;pwd=haosql;database={0}";var db = new SqlSugarClient(newConnectionConfig()

{

DbType=SqlSugar.DbType.SqlServer,

ConnectionString= string.Format(conn, "db1"),

InitKeyType=InitKeyType.Attribute

});

db.DbMaintenance.CreateDatabase();var db2 = new SqlSugarClient(newConnectionConfig()

{

DbType=SqlSugar.DbType.SqlServer,

ConnectionString= string.Format(conn, "db2")

});

db2.DbMaintenance.CreateDatabase();

2、动态建表

下面代码将生成生Order1和Order2 两张表//注意db必须是同一个上下文

var db = new SqlSugarClient(newConnectionConfig()

{

DbType=SqlSugar.DbType.SqlServer,

ConnectionString= ".;xxx",

InitKeyType=InitKeyType.Attribute //这个属性必须这么设置

});

db.MappingTables.Add(typeof(Order).Name, typeof(Order).Name + 1);

db.CodeFirst.InitTables(typeof(Order));

db.MappingTables.Add(typeof(Order).Name, typeof(Order).Name + 2);

db.CodeFirst.InitTables(typeof(Order));

3、实体增、删、查、改

var list= db.Queryable().AS("Order1").ToList();//查询Order1的表//增 删 改用法和查询一样 Inasertable().AS Deleteable().AS Updateable().As

4、跨库联表查询

var list = db.Queryable((o, i, c) => o.Id == i.OrderId&&c.Id ==o.CustomId)

.AS("xx.order")

.AS("yy.OrderItem")

.AS("zz.Custom")

.Select()

.ToList();

5、多切换

SqlSugarClient db = new SqlSugarClient(new List()

{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}

});//库1

try{

db.BeginTran();

db.Deleteable().ExecuteCommand();

db.ChangeDatabase("2");//使用库2

db.Deleteable().ExecuteCommand();

db.CommitTran();

}catch{

db.RollbackTran();

}

实践功能5:无限级别的级联插入

使用sqlsugar只需要配置主键,不需要实体配置任何外键关系就能实现级联插入

//有自动赋值的外键

db.Insertable(newOrder()

{

Name= "订单 1",

CustomId= 1,

Price= 100,

CreateTime=DateTime.Now,

Id= 0,//自增列

Items = new List() {newOrderItem(){

CreateTime=DateTime.Now,

OrderId=0,//需要自动获取订单的自增列

Price=1,

ItemId=1}

}

})

.AddSubList(it=> it.Items.First().OrderId )//设置item表的OrderId等于订单自增列

.ExecuteReturnPrimaryKey();

实践功能6:全自动二级缓存

当我们用到Redis等操作时,更新数据时需要及时去清理缓存会变的非常复杂,SqlSugar支持多表缓存,并且更新其中一张表并且能够清除缓存

二缓缓存是将结果集进行缓存,当SQL和参数没发生变化的时候从缓存里面读取数据,减少数据库的读写操作

ICacheService myCache = newHttpRuntimeCache();

SqlSugarClient db= new SqlSugarClient(newConnectionConfig()

{

ConnectionString=Config.ConnectionString,

DbType=DbType.SqlServer,

IsAutoCloseConnection= true,

ConfigureExternalServices= newConfigureExternalServices()

{

DataInfoCacheService= myCache //配置我们创建的缓存类

}

});

db.Queryable().Where(it => it.Id > 0).WithCache().ToList();//设置缓存默认一天

db.Queryable().WithCache(1000).ToList();//设置具体过期时间

删除数据同时更新缓存,插入用和更新也一样的用法

db.Deleteable().RemoveDataCache().Where(it => it.Id == 1).ExecuteCommand();//remove所有引用Student表的缓存,包含多表查询

实践功能7:支持对数据库的多种操作

名称

备注

返回类型

GetDataBaseList

获取所有数据库名称

List

GetViewInfoList

获取所有视图

List

GetTableInfoList

获取所有表

List

GetColumnInfosByTableName

获取列根据表名

List

GetIsIdentities

获取自增列

List

GetPrimaries

获取主键

List

IsAnyTable

表是否存在

bool

IsAnyColumn

列是否存在

bool

IsPrimaryKey

主键是否存在

bool

IsIdentity

自增是否存在

bool

IsAnyConstraint

约束是否存在

bool

DropTable

删除表

bool

TruncateTable

清空表

bool

CreateTable

创建列(不建议使用,用CodeFirst建表)

bool

AddColumn

添加列

bool

UpdateColumn

更新列

bool

AddPrimaryKey

添加主键

bool

DropConstraint

删除约束

bool

BackupDataBase

备份库

bool

DropColumn

删除列

bool

RenameColumn

重命名列

bool

AddTableRemark

添加表描述

bool

AddColumnRemark

添加列描述

bool

DeleteColumnRemark

删除列描述

bool

RenameTable

重命名表

bool

实践功能8:动态SQL完美防注入方案

var orderField = "order';drop table order";

var orderInfo= db.EntityMaintenance.GetEntityInfo();

if (orderInfo.Columns.Any(it => it.DbColumnName != orderField))

{

throw new Exception("请不要非法注入");

}

db.Queryable().OrderBy(orderField).ToList();

SqlSugar一直在努力的变的更好,所有功能都是来自客户并且经受过长期的用户实践,为了能够给我更多动力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值