[LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询

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

支持.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框架(一)---基础查询
  • [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询
  • [LINQ2Dapper]最完整Dapper To Linq框架(三)---实体类关系映射
  • [LINQ2Dapper]最完整Dapper To Linq框架(四)---Linq和SQL并行使用
  • [LINQ2Dapper]最完整Dapper To Linq框架(五)---查看Linq实际执行的SQL
  • [LINQ2Dapper]最完整Dapper To Linq框架(六)---多表联合与匿名类型返回

(一)Model实体类 

 实体类层需要安装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

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


你可能感兴趣的:([LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询)