ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

[LINQ2Dapper]最完整Dapper To Linq框架(四)---Linq和SQL并行使用

2019-06-24 16:54:13  阅读:394  来源: 互联网

标签:code roleId Linq Connection LINQ2Dapper SQL Dapper Where Id


此例子是使用LINQ2Dapper封装,效率优于EntityFramwork,并且支持.NetFramework和.NetCore框架,只依赖于Dapper
支持.net framework4.6.1及以上

支持.net core2.0及以上

1.同时使用LINQ和SQL进行查询

Connection为连接对象,详情请见 [LINQ2Dapper]最完整Dapper To Linq框架(一)

为了给予用户更多选择,可以使用LINQ和sql一起进行查询,来实现一些较为复杂的逻辑

例如

Connection.QuerySet<users>().Where<users>(x => x.roleId > 0 && x.roleId < 10).Where("users.code=@code", new { code = "3" }).ToList();

Where<users>(x => x.roleId > 0 && x.roleId < 10)为linq部分,Where("code=@code", new { code = "3" })为sql部分,

最终会拼接成

SELECT * FROM users WHERE roleId>0 AND roleId<10 AND code=3

 

2.复杂的SQL也可支持

Connection.QuerySet<users>().Where($@"roleId in(select roleId from role_Power where createDate<@createDate)", new
                {
                    createDate = DateTime.Now
                }).Where(x => x.code != "3").ToList();

这是一个子查询条件的拼接

 

3.连表时注意

Connection.QuerySet<users>().Join<users, project_Role>(x => x.roleId, y => y.id).Where("project_Role.Id>@Id", new { Id = 1 }).ToList();

连表时需要加上表前缀,以免字段重名冲突

例如project_Role.Id ,project_Role为表名

 

完整Demo可以去Github上下载:

https://github.com/a935368322/Kogel.Dapper.Test

如有问题也可以加QQ群讨论:

技术群 710217654

框架开源,可以加群下载源码

标签:code,roleId,Linq,Connection,LINQ2Dapper,SQL,Dapper,Where,Id
来源: https://www.cnblogs.com/kogel/p/11077940.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有