ShadowSql专职拼写sql,要想做为ORM就需要借高人之手
我们要借的就是Dapper,Dapper以高性能著称,ShadowSql搭配Dapper就是强强联手
为此本项目内置了一个子项目Dapper.Shadow就是Dapper扩展
以下是Dapper.Shadow的示例
一、配置Dapper执行器
ISqlEngine engine = new SqliteEngine();
IDbConnection connection = new SqliteConnection("Data Source=file::memory:;Cache=Shared");
IExecutor executor = new DapperExecutor(engine, connection);
其中engine数据库(及方言)的配置对象,现在支持5种,分别是MsSql、MySql、Oracle、Postgres和Sqlite
实现ISqlEngine可以自定义数据库类型或者方言的支持
二、读取整张表
var students = Executor.From("Students")
.ToDapperSelect()
.Get<Student>();
三、查询数据
1、SqlQuery查询数据
var students = Executor.From("Students")
.ToSqlQuery()
.Where("Age=10")
.ToDapperSelect()
.Get<Student>();
var students = Executor.From("Students")
.ToSqlQuery()
.ColumnValue("Age", 10)
.ToDapperSelect()
.Get<Student>();
var table = new StudentTable("Students");
var students = table.ToSqlQuery()
.Where(table.Age.EqualValue(10))
.ToSelect()
.Get<Student>(Executor);
var students = new StudentTable("Students")
.ToSqlQuery()
.Where(table => table.Age.EqualValue(10))
.ToSelect()
.Get<Student>(Executor);
var students = new Table("Students")
.DefineColums("Age")
.ToSqlQuery()
.Where(student => student.Column("Age").EqualValue(10))
.ToDapperSelect(Executor)
.Get<Student>();
主要分以下三种
1.1 把执行器当数据库对象,这样查询就自带执行器,可以直接执行
1.2 执行时把执行器当参数传入
1.3 先查询,调用ToDapperSelect创建可执行对象
2、Query查询数据
var table = new StudentTable("Students");
var students = table.ToQuery()
.And(table.Age.EqualValue(10))
.ToSelect()
.Get<Student>(Executor);
var students = Executor.From("Students")
.ToQuery()
.And(table => table.Field("Age").EqualValue(10))
.ToDapperSelect()
.Get<Student>();
var table = new StudentTable("Students");
var students = table.ToQuery()
.And(table.Age.EqualValue(10))
.ToDapperSelect(Executor)
.Get<Student>();
查询方式多样,限与篇幅没法一一
以上示例邮件可以清晰显示ShadowSql和Dapper可以无缝对接
就这样实现了一个精简的高性能ORM,您也可以使用ShadowSql和Dapper来DIY属于自己的高性能ORM