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

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

支持.net framework4.6.1及以上

支持.net core2.0及以上

     应用层需要引用包Kogel.Dapper.Extension.MsSql(如果数据库是Oracle则引用Kogel.Dapper.Extension.Oracle),Nuget上可以下载安装。

     实体类层需要安装Kogel.Dapper.Extension表名字段特性。

Model实体类

using Kogel.Dapper.Extension.Attributes;

 public class users
    {
        /// <summary>
        /// 用户id(特性Identity标识该字段为主键)
        /// </summary>    
        [Identity]
        public int id { get; set; }

        /// <summary>
        /// code
        /// </summary>    
        public string code { get; set; }

        /// <summary>
        /// 用户名称
        /// </summary>    
        public string name { get; set; }

        /// <summary>
        /// 创建方式(1自定义角色 2通用角色)
        /// </summary>    
        public int createWay { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>    
        public DateTime createDate { get; set; }

        /// <summary>
        /// 创建人
        /// </summary>    
        public string createUsers { get; set; }

        /// <summary>
        /// 角色id
        /// </summary>    
        public int roleId { get; set; }

 

使用实例

using System;
using System.Data;
using System.Data.SqlClient;
using System.Linq;

using Kogel.Data.Model;//实体类

using Kogel.Dapper.Extension.MsSql;
using Kogel.Dapper.Extension.MsSql.Extension;


namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var conn = new SqlConnection("server=localhost;user id=sa;password=sa;database=PermissionManage"))
            {
                //模型类属性不能出现可空类型,例如int?
                var list = conn.QuerySet<users>().Where(x => x.name.Contains("Y")).ToList();
                //查询
                var users = conn.QuerySet<users>().Where(x => x.code != "1").Get();
               
                //模糊查询
                var users1 = conn.QuerySet<users>().Where(x => x.name.Contains("Y")).Get();
             
                //修改
                users1.name = Guid.NewGuid().ToString();
                users1.createDate = DateTime.Now;
                int result = conn.CommandSet<users>().Where(x => x.id == 4).Update(users1);
            
                //修改查询
                var users2 = conn.QuerySet<users>().Where(x => x.name.Contains("Y")).UpdateSelect(x => new users { name = "Y11" }).FirstOrDefault();
            
                //新增
                int result2 = conn.CommandSet<users>().Insert(new users() { code = Guid.NewGuid().ToString(), name = "test", createWay = 1, createDate = DateTime.Now, roleId = 2 });
              
                //删除
                int result3 = conn.CommandSet<users>().Where(x => x.roleId == 2 && x.name == users2.name).Delete();

                //不连表查询返回dynamic
                var list1 = conn.QuerySet<users>().Where(x => x.code != "1").ToList(true);
                //连表查询返回dynamic
                var list2 = conn.QuerySet<users>().Where(x => x.code != "1").Join<users, project_Role>(x => x.roleId, y => y.id).ToList(true);

                //翻页查询
                var list3 = conn.QuerySet<users>().OrderBy(x => x.createDate).PageList(1, 10);
                //翻页连表查询返回dynamic
                var list4 = conn.QuerySet<users>().Join<users, project_Role>(x => x.roleId, y => y.id).OrderBy(x => x.createDate).PageList(1, 10, true);
                //动态化查询
                var list5 = conn.QuerySet<users>().Where(new users() { id = 2, name = "Y11" }).Get();
                //连表使用主表和副表条件翻页查询
                var list6 = conn.QuerySet<users>().Join<users, project_Role>(x => x.roleId, y => y.id).Where(x => x.name == "adonis")
                    .Where<project_Role>(x => x.projectId == 2 && x.enabled == true).OrderBy(x => x.createDate).PageList(1, 10, true);

            };
        }
    }
}

完整Demo可以去Github上下载:

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

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

技术群 710217654

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


转载于:https://www.cnblogs.com/kogel/p/10805696.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值