.net轻量级ORM
连接sqlserver
<appSettings>
<add key="Con" value="Data Source =192.168.10.8;Initial Catalog = XDB;User Id = sa;Password = 123456;" />
<add key="Type" value="SqlServer"/>
</appSettings>
连接mysql
<appSettings>
<add key="Con" value="server=192.168.1.1;uid=root;database=aa;pwd=1234;CharSet=gb2312;Convert Zero Datetime=True;" />
<add key="Type" value="MySql"/>
</appSettings>
1:最简单的查询单条记录
User ou = IDB.Simple<User>(CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa"));
同写sql的方式
User ou = IDB.Simple<User>("select * from User where USER_TYPE = @ut and PASSWORD = @pa", new { ut = 1, pa = "aaa" });
2:查询多条记录
List<User> olist = IDB.List<User>(CModel.User.Select.Where(a=>a.UUID > 2));
同写sql的方式
List<User> olist = IDB.List<User>("select * from User where uuid > @uid", new { uid = 2 });
查询1000条30毫秒左右
3:条件的使用
使用 and (where a.USER_TYPE = @a3qf6eqse and a.PASSWORD = @dve2tge)
CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa")
使用 or (where a.USER_TYPE = @a3qf6eqse or a.PASSWORD = @dve2tge)
CModel.User.Select.Where(a => a.USER_TYPE == 1 | a.PASSWORD == "aaa")
使用 Between and
CModel.User.Select.Where(a => a.ID.Between(1,20))
使用like
CModel.User.Select.Where(a => a.ID.Like("%"+2)))
使用 > ,>=,< <=.......
CModel.oll_user.Select.Where(a => a.UUID>10 & a.UUID <= 20 | a.UUID >=20)
循环添加条件,有时需要更具某些条件,循环添加,whereor和前边条件or连接,whereand 即and连接
var wc = CModel.Price_UpSet_Unite.Select.Where(a => a.Id == 1234);
for (int i = 0; i < 2; i++)
{
wc.WhereOr(a => a.Id == i);
wc.WhereAnd(a => a.ErrorReason == 1234);
}
string sqls = DB.IDB.ToSql(wc); 复杂的循环添加条件,有时不仅要循环添加条件而且循环添加的条件还必须做为一个整体和前边的条件连接
wc.WrapWhereAndBegin()括号开始
wc.WrapWhereEnd();括号结束
var wc = CModel.Price_UpSet_Unite.Select.Where(a => a.Id == 1234);
//开始循环条件处理
wc.WrapWhereAndBegin();
for (int i = 0; i < 2;i++ )
{
wc.WhereOr(a => a.CurrencyName == 1234);
wc.WhereOr(a => a.ErrorReason == 1234);
}
//结束循环条件处理
wc.WrapWhereEnd();
string sqls = DB.IDB.ToSql(wc);
4:选择你需要查询的字段
使用Column函数进行字段选择 as函数重命名
只查询NAME一个字段并重名
IDB.Simple<User>(CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa").Column(a=>a.PLAYER_NAME.As("name")))
查询多个字段
IDB.Simple<User>(CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa").Column(a=>new[]{a.PLAYER_NAME,a.STATUS,a.PASSWORD}))
匹配dto,ColumnFitType
参数可以指定表前缀:如果不指定前缀可能出现调用不明确的问题,join或多表查询的时候
参数可以指定需要忽略的字段:不想查询指定DTO的全部字段时可使用
5:多表连接查询
使用 join ,left join ,right join 函数
使用 join gambleOrder连接notice表 条件为 gambleOrder.id =notice.id 写法
List<gambleOrder> olist = IDB.List<gambleOrder>(CModel.oll_user.Select.Join<AJ.CModel.notice>((a, b) => a.id== b.id).Where(a => a.UUID > 10 & a.UUID <= 20 | a.UUID >= 20));
使用left
join gambleOrder连接notice表 条件为
gambleOrder.id =notice.id 写法
List<gambleOrder> olist = IDB.List<gambleOrder>(CModel.oll_user.Select.LeftJoin<AJ.CModel.notice>((a, b) => a.id== b.id).Where(a => a.UUID > 10 & a.UUID <= 20 | a.UUID >= 20));
多表join
6:常用函数的使用
直接到字段选择中就可以使用常用的函数,可以随意的进行组合的运算操作
使用平均函数Avg
List<gambleOrder> go = DataBase.IDB.List<gambleOrder>(
CModel.gambleOrder.Select.Where(a => a.UUID > 10)
.Column(a=>a.NICK_NAME.Avg));
使用求和函数Sum
List<gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
CModel.gambleOrder.Select.Where(a => a.UUID > 10)
.Column(a=>a.NICK_NAME.Sum));
组合运算操作 求平均数在计数在除以求和数
List<gambleOrder> go = DataBase.IDB.List<gambleOrder>(
CModel.gambleOrder.Select.Where(a => a.UUID > 10)
.Column(a=>(a.NICK_NAME.Avg*a.PASSWORD.Count)/a.STATUS.Sum));
7:分组排序
a:分组
更具STATUS分组
List<gambleOrder> go = DataBase.IDB.List<gambleOrder>(
CModel.gambleOrder.Select.GroupBy(a=>a.STATUS));
更具id和 name分组
City.Select.GroupBy(a => new []{a.Id,a.Name})join后多表分组
b:排序
排序 更具id降序排序 desc
List<AJ.Model.gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
AJ.CModel.gambleOrder.Select.OrderBy(a=>a.ID.desc));
多字段排序 更具id降序排序 desc ,name升序asc 要使用&连接必须要加上desc,或者asc
AJ.CModel.City.Select.OrderBy(a=>a.Id.desc &a.Name.asc)
join后多表排序
8:返回键值对
Dictionary<string, string> dic = DB.IDB.ListKevValue<string, string>(CModel.Price_Ship.Select.Join<CModel.Relate_Ship>
((a, b) => a.Id == b.ShipID).Column<CModel.Price_Ship, CModel.Relate_Ship>((a, b) => new[] { b.ShipID, a.NameEN })); 只能返回两列,第一列作为键,第二列作为值
9:分页
1:使用page
2:分页时需要先查询总条数
.New表示生成一个新的对象,利用条件返回总条数后不影响后边的返回
10:子查询
a:in使用子查询
b:相关子查询
本文介绍了一种.NET轻量级ORM框架的使用方法,包括数据库连接配置、基本查询、多表连接、条件使用及复杂查询技巧等核心功能。

4818

被折叠的 条评论
为什么被折叠?



