欢迎使用Yang.Query
Yang.Query是一款简单轻量的orm组件。
本组件暂时只支持MSSQL2012 以上版本。
本组件支持.NETFramework 4.5.1以上或.NETCore2.0以上
https://www.nuget.org/packages/Yang.Query.Dapper2MsSql/
开始
获取NUGET包 Yang.Query.Dapper2MsSql
引用
using Yang.Query;
using Yang.Query.Dapper2MsSql;
建立数据映射类
[TableAttribute(name:"lob.TestTable")]
public class TestTable
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public DateTime Dt { get; set; }
}
创建数据库连接对象,全局更佳
var connStr ="Data Source=xxx.xxx.xxx.xxx; Initial Catalog=xxx; Max Pool Size=1024; User ID=xxx; Password=xxx";
var cnn = new System.Data.SqlClient.SqlConnection(connStr);
查询
基本查询
System.Data.IDbConnection cnn ;
var res4 = cnn.Find<GoodsInfo>(o => o.GoodsId == 1).Ex();
查询一条
System.Data.IDbConnection cnn ;
var res3 = cnn.Find<GoodsInfo>().Take1().Ex();
模糊查询
System.Data.IDbConnection cnn ;
var res1 = cnn.Find<GoodsInfo>(o => o.Name.Like("%哈哈%") ).Ex();
var res2 = cnn.Find<GoodsInfo>(o => o.Name.Like("%哈哈") ).Ex();
var res3 = cnn.Find<GoodsInfo>(o => o.Name.Like("哈哈%") ).Ex();
条件查询
System.Data.IDbConnection cnn ;
var finder = cnn.Find<GoodsInfo>(o => o.Name.Like("%哈哈%") )
if(true){
finder.And(o => o.GoodsId == 1)
}
var res1 = finder.Ex();
排序
System.Data.IDbConnection cnn ;
var res3 = cnn.Find<GoodsInfo>().Sort(o => o.UpdateTime, EOrderBy.Asc).Ex();
分页
System.Data.IDbConnection cnn ;
var res2 = cnn.Find<GoodsInfo>().Sort(o => o.UpdateTime).Take(10).Skip(10).Ex();
插入数据
var dt = new TestTable() { Name = "改了", Dt = DateTime.Now };
cnn.Insert(dt).Ex();
更新数据
//方法1
var dt = new TestTable() { Id = 10, Name = "改了", Dt = DateTime.Now };
cnn.Update(dt).Ex();
//注意 TestTable 的id字段需要标注 [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
//方法2
cnn.Update<TestTable>(o => o.Id == 10).Set(o => o.Name, "新的名字").Ex();
高级技巧
异步操作
var task_1 = cnn.Find<GoodsInfo>().Take(1000).ExAsyn();
var task_2 = cnn.Find<GoodsInfo>().Take(100).ExAsyn();
var res1= await task_1;
var res2= await task_2;
In函数
int[] arr = new int[] { 1, 2, 3, 4, 5, 6 };
var res1 = cnn.Find<GoodsInfo>(o => o.GoodsId.in(arr)).Ex();
事务
cnn.Transaction(trs =>
{
trs.Insert(new TestTable() { Name = "改了", Dt = DateTime.Now }).Ex;
trs.Update<TestTable>(o => o.Id == 10).Set(o => o.Name, "新的名字").Ex();
});