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

此例子是使用LINQ2Dapper封裝,效率優於EntityFramwork,而且支持.NetFramework和.NetCore框架,只依賴於Dapper

支持.net framework4.6.1及以上git

支持.net core2.0及以上github

     應用層須要引用包Kogel.Dapper.Extension.MsSql(若是數據庫是Oracle則引用Kogel.Dapper.Extension.Oracle),Nuget上能夠下載安裝。sql

     實體類層須要安裝Kogel.Dapper.Extension表名字段特性。數據庫

(一)Model實體類

using Kogel.Dapper.Extension.Attributes;app

 public class users
    {
        /// <summary>
        /// 用戶id(特性Identity標識該字段爲主鍵,[更多特性詳情請點擊])
        /// </summary>    
        [Identity]
        public int id { get; set; }框架

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

        /// <summary>
        /// 用戶名稱
        /// </summary>    
        public string name { get; set; }.net

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

        /// <summary>
        /// 建立時間
        /// </summary>    
        public DateTime createDate { get; set; }對象

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

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

 

(二)使用實例

首先添加命名空間

using Kogel.Dapper.Extension.MsSql;

能夠經過數據庫鏈接對象點出擴展方法,例如

var conn = new SqlConnection("數據庫鏈接字符串");

使用完記得釋放鏈接對象,能夠經過using或者 conn.Dispose();


查詢
var users = conn.QuerySet<users>().Where(x => x.code != "1").Get();
               
模糊查詢
var users1 = conn.QuerySet<users>().Where(x => x.name.Contains("Y")).Get();
        

修改
var users=new users();          

users.name = Guid.NewGuid().ToString();
users.createDate = DateTime.Now;
int result = conn.CommandSet<users>().Where(x => x.id == 4).Update(users);
            
修改查詢
 var users = conn.QuerySet<users>().Where(x => x.name.Contains("Y")).UpdateSelect(x => new users { name = "Y11" }).FirstOrDefault();
            
新增
  int result = conn.CommandSet<users>().Insert(new users() { code = Guid.NewGuid().ToString(), name = "test", createWay = 1, createDate = DateTime.Now, roleId = 2 });
              
 刪除
 int result = conn.CommandSet<users>().Where(x => x.roleId == 2 && x.name == users2.name).Delete();

 

若是想使用事務能夠經過

conn.CommandSet<users>(事務對象) 

使用事務必須先手動打開數據庫:conn.Open();

 

    
連表查詢

Join<主表,副表>(主表關聯字段,副表關聯字段)
var list = conn.QuerySet<users>().Where(x => x.code != "1").Join<users, project_Role>(x => x.roleId, y => y.id).ToList();

連表查詢能夠渲染成指定實體類,例如動態類型(dynamic)

var list = conn.QuerySet<users>().Where(x => x.code != "1").Join<users, project_Role>(x => x.roleId, y => y.id).ToList<dynamic>();

 

翻頁查詢
var list = 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<dynamic>(1, 10);
         

 Kogel.Dapper還支持linq和sql同時使用

已完成更加複雜查詢條件或者連表關係,[詳情請點擊此處]

 

完整Demo能夠去Github上下載:

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

若有問題也能夠加QQ羣討論:

技術羣 710217654

框架開源,能夠加羣下載源碼

相關文章
相關標籤/搜索