支持.net framework4.5.1,.net core2.0及以上,更低版本适配如.netFramework4.0及以下请加群下载
支持Mssql,Oracle,Mysql等数据库
应用层需要引用包Kogel.Dapper.Extension.MsSql(如果数据库是Oracle则引用Kogel.Dapper.Extension.Oracle),Nuget上可以下载安装。
[LINQ2Dapper]最完整Dapper To Linq框架(六)---多表联合与匿名类型返回
实体类层需要安装Kogel.Dapper.Extension表名字段特性。[更多特性详情请点击]
using Kogel.Dapper.Extension.Attributes;
public class users
{
///
/// 用户id(特性Identity标识该字段为主键)
///
[Identity]
public int id { get; set; }
///
/// code
///
public string code { get; set; }
///
/// 用户名称
///
public string name { get; set; }
///
/// 创建方式(1自定义角色 2通用角色)
///
public int createWay { get; set; }
///
/// 创建时间
///
public DateTime createDate { get; set; }
///
/// 创建人
///
public string createUsers { get; set; }
///
/// 角色id
///
public int roleId { get; set; }
}
首先添加命名空间
using Kogel.Dapper.Extension.MsSql;
可以通过数据库连接对象点出扩展方法,例如
var conn = new SqlConnection("数据库连接字符串");
使用完记得释放连接对象,可以通过using或者 conn.Dispose();
查询
var users = conn.QuerySet().Where(x => x.code != "1").Get();
模糊查询
var users1 = conn.QuerySet().Where(x => x.name.Contains("Y")).Get();
修改
var users=new users();
users.name = Guid.NewGuid().ToString();
users.createDate = DateTime.Now;
int result = conn.CommandSet().Where(x => x.id == 4).Update(users);
修改查询
var users = conn.QuerySet()
.Where(x => x.name.Contains("Y"))
.UpdateSelect(x => new users { name = "Y11" })
.FirstOrDefault();
新增
int result = conn.CommandSet()
.Insert(new users() {
code = Guid.NewGuid().ToString(),
name = "test", createWay = 1,
createDate = DateTime.Now,
roleId = 2 });
删除
int result = conn.CommandSet()
.Where(x => x.roleId == 2 && x.name == users2.name)
.Delete();
如果想使用事务可以通过
conn.CommandSet
使用事务必须先手动打开数据库:conn.Open();
连表查询
Join<主表,副表>(主表关联字段,副表关联字段)
var list = conn.QuerySet()
.Where(x => x.code != "1")
.Join(x => x.roleId, y => y.id)
.ToList();
连表查询可以渲染成指定实体类,例如动态类型(dynamic)
var list = conn.QuerySet()
.Where(x => x.code != "1")
.Join(x => x.roleId, y => y.id)
.ToList();
翻页查询
//翻页查询第一页,10条数据
var list = conn.QuerySet()
.OrderBy(x => x.createDate)
.PageList(1, 10);
//翻页连表查询返回dynamic
var list1 = conn.QuerySet()
.Join(x => x.roleId, y => y.id)
.OrderBy(x => x.createDate)
.PageList(1, 10);
多表任意联查
var users = conn.QuerySet()
.Join((a, b) => a.roleId == b.id)
.Where((a, b) => a.id == 3 && b.id == 3)
.Get();
Kogel.Dapper还支持linq和sql同时使用
已完成更加复杂查询条件或者连表关系,[详情请点击此处]。
完整Demo可以去Github上下载:
https://github.com/a935368322/Kogel.Dapper.Test
如有问题也可以加QQ群讨论:
技术群 710217654
框架开源,可以加群下载源码