SqlSugarRepository.dll 全库开发框架支持 四种数据库:SqlServer、 MySql 、Oracle和Sqlite。
SqlSugarRepository是为全库开发而生的ORM框架,能够做到多种数据库之间的无间隙切换,在这一年多的时间里,园友提出的各种需求我都已经切切实实的去做了,做到了能力范围内的最好,一个不错的里程碑。同时也对未来有了更明确的规划,这只是开源的开始,Sugar ORM 还会有更多惊喜。
基于SqlSugar的开源CMS(百签软件出品)和SqlSugar官网 本月将开源
主流ORM多库支持情况
Dapper 有多库访问组件,做不了同一个查询语句适用多种数据库。(select * from table这种除外)
EF 有多库访问组件,可以做到同一个查询适用多种数据库,但是命名空间引用不同需要自已用仓储实现多库
SqlSugarRepository 有多库访问组件,可以做到同一个查询适用多种数据库,已经实现内部工厂,比仓储模式的应变能力更强。
优点:
语法具有创新并且丰富
接近原生的性能
完整的学习文档
使用方便, Nuget直接搜索SqlSugarRepository下载便可,依赖dll都打包好了
Sugar ORM 所有成员
如果你只想操作一种数据库,可以针对不同数据库选择独立的dll
Asp.net 4.+Asp.net Core说明依赖
SqlSugar.dll
SqlSugarCore.dll
SqlServer ORM
无
MysqlSugar.dll
MysqlSugarCore.dll
MySql ORM
MySql.Data.dll
SqliteSugar.dll
SqliteSugarCore.dll
Sqlite ORM
System.Data.SQLite.dll
SQLite.Interop.dll(Core版不需要)
OracleSugar.dll
-
Oracle ORM
Oracle.ManagedDataAccess.dll
SqlSugarRepository.dll
-
SqlServer MySql Sqlite Oracle 四合一
MySql.Data.dll
System.Data.SQLite.dll
Oracle.ManagedDataAccess.dll
SQLite.Interop.dll
数据库连接
普通模式
这种模式简单粗爆,适合一个产品支持多种数据库,但是中间没有两种数据库同时操作。
//普通连接
using (ISqlSugarClient idb =DbRepository.GetInstance(DbType.MySql, SugarDao.MySqlConnString))//DbRepository 框架现成的类,并非自定义
{var list = idb.Queryable().First();
}
灵活模式
适合多种数据库混用项目
//使用MyRepository连接数据库
using (MyRepository db = newMyRepository())
{//当前连接的sqlconn1
var list = db.Database.Queryable().First();//切换mysqlconn1
db.SetCurrent(db.MySqlConn1);var list2 = db.Database.Queryable().First(); ;
}
usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSqlSugarRepository;namespaceNewTest.Demos
{public classMyRepository:DbRepository
{public ConnectionConfig SqlConn1 = new ConnectionConfig() { DbType = DbType.SqlServer, ConnectionString =SugarDao.SqlConnString1 };public ConnectionConfig SqlConn2 = new ConnectionConfig() { DbType = DbType.SqlServer, ConnectionString =SugarDao.SqlConnString2 };public ConnectionConfig MySqlConn1 = new ConnectionConfig() { DbType = DbType.MySql, ConnectionString =SugarDao.MySqlConnString };
}
}
MyRepository为自定义类继承 DbRepository
多库支持
统一参数关键词和Sqlparameter
不管操作哪个数据库关键词都是@并且用到Sqlparameter地方不需要切换成MySqlparameter这种,如下写法:
var student12 = db.Queryable().Where(c => c.name).Where("id>@id", new { id = 1 }).ToList();
db.SqlQuery("select * from Student where id=@id",new SqlParameter("@id","id"));
复杂SQL的选择器
当ORM语法不能满足的时候我们就需要用到原生SQL或者存储过程,sqlbuilder可以根据当前连接哪种数据库返回相应的SQL语句。
string sql =db.SqlBuilder()
.ToSqlServer("select top 1 id,name from student")
.ToOracle("select id,name from student where rownum=1")
.ToOther("select id,name from student limit 0,1").ToString();var list = db.SqlQuery(sql).SingleOrDefault();
返回类型的支持
Queryable返回类型支持四种 List Dynamic JsonString DataTable
var student = db.Queryable().ToList();var studentDynamic = db.Queryable(