目录
- [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询
- [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询
- [LINQ2Dapper]最完整Dapper To Linq框架(三)---实体类关系映射
- [LINQ2Dapper]最完整Dapper To Linq框架(四)---Linq和SQL并行使用
- [LINQ2Dapper]最完整Dapper To Linq框架(五)---查看Linq实际执行的SQL
- [LINQ2Dapper]最完整Dapper To Linq框架(六)---多表联合与匿名类型返回
- [LINQ2Dapper]最完整Dapper To Linq框架(七)---仓储模式
- [LINQ2Dapper]最完整Dapper To Linq框架(八)---导航属性
此例子是使用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.连表也支持SQL
默认SQL连表不会查询连表的字段
var users = Connection.QuerySet<users>()
.Join("LEFT JOIN project_Role ON users.roleId=project_Role.id")
.Get<dynamic>();
如果想获取连表的字段需要指明实体类
var users = Connection.QuerySet<users>()
.Join<project_Role>("LEFT JOIN project_Role ON users.roleId=project_Role.id")
.Get<dynamic>();
4.连表时注意
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
框架开源,可以加群下载源码