欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中Dapper的使用教程

 更新時間:2021年07月01日 16:01:25   作者:奇然  
Dapper是一款輕量級ORM工具(Github),Dapper語法十分簡單。并且無須遷就數(shù)據(jù)庫的設(shè)計,今天通過本文給大家介紹C# Dapper的使用,感興趣的朋友一起看看吧

一、什么是Dapper

  Dapper是一款輕量級ORM工具(Github)。如果你在小的項目中,使用Entity Framework、NHibernate 來處理大數(shù)據(jù)訪問及關(guān)系映射,未免有點殺雞用牛刀。你又覺得ORM省時省力,這時Dapper 將是你不二的選擇。

二、Dapper的優(yōu)點

  1. 輕量。只有一個文件SqlMapper.cs,編譯后就40K的一個很小的Dll.
  2. 速度快。Dapper的速度接近與IDataReader,取列表的數(shù)據(jù)超過了DataTable。
  3. 支持多種數(shù)據(jù)庫。Dapper可以在所有Ado.net Providers下工作,包括sqlite, sqlce, firebird, oracle, MySQL, PostgreSQL and SQL Server
  4. 可以映射一對一,一對多,多對多等多種關(guān)系。
  5. 性能高。通過Emit反射IDataReader的序列隊列,來快速的得到和產(chǎn)生對象,性能不錯。
  6. 支持FrameWork2.0,3.0,3.5,4.0,4.5
  7. Dapper語法十分簡單。并且無須遷就數(shù)據(jù)庫的設(shè)計。

三、使用方法

  1、添加NuGet程序包Dapper

  

  2、配置文件添加連接數(shù)據(jù)庫的字符串

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
  </startup>
  <connectionStrings>
    <add name="MyStrConn" connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=DHR_DB;Integrated Security=True" />
  </connectionStrings>
</configuration>

  3、添加DapperTools.cs(添加、批量添加、刪除、批量刪除、修改、批量修改、查詢、查詢in的操作、多語句操作)

// <copyright file="DapperTools.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>

namespace CSharpStudy
{
    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Dapper;

    internal class DapperTools
    {
        public static string ConnectionString = ConfigurationManager.ConnectionStrings["MyStrConn"].ConnectionString;

        /// <summary>
        /// 添加.
        /// </summary>
        /// <typeparam name="T">實體類型.</typeparam>
        /// <param name="sql">傳入sql執(zhí)行語句.</param>
        /// <param name="t">傳入實體類型.</param>
        /// <returns>int.</returns>
        public static int Add<T>(string sql, T t)
            where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Execute(sql, t);
            }
        }

        /// <summary>
        /// 批量添加.
        /// </summary>
        /// <typeparam name="T">實體類型.</typeparam>
        /// <param name="sql">傳入sql執(zhí)行語句.</param>
        /// <param name="t">傳入泛型類.</param>
        /// <returns>int.</returns>
        public static int Add<T>(string sql, List<T> t)
            where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Execute(sql, t);
            }
        }

        /// <summary>
        /// 刪除.
        /// </summary>
        /// <typeparam name="T">實體類型.</typeparam>
        /// <param name="sql">傳入sql執(zhí)行語句.</param>
        /// <param name="t">傳入實體類型.</param>
        /// <returns>int.</returns>
        public static int Delete<T>(string sql, T t)
              where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Execute(sql, t);
            }
        }

        /// <summary>
        /// 批量刪除.
        /// </summary>
        /// <typeparam name="T">實體類型.</typeparam>
        /// <param name="sql">傳入sql執(zhí)行語句.</param>
        /// <param name="t">傳入泛型類.</param>
        /// <returns>int.</returns>
        public static int Delete<T>(string sql, List<T> t)
              where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Execute(sql, t);
            }
        }

        /// <summary>
        /// 修改.
        /// </summary>
        /// <typeparam name="T">實體類型.</typeparam>
        /// <param name="sql">傳入sql執(zhí)行語句.</param>
        /// <param name="t">傳入實體類型.</param>
        /// <returns>int.</returns>
        public static int Update<T>(string sql, T t)
              where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Execute(sql, t);
            }
        }

        /// <summary>
        /// 批量修改.
        /// </summary>
        /// <typeparam name="T">實體類型.</typeparam>
        /// <param name="sql">傳入sql執(zhí)行語句.</param>
        /// <param name="t">傳入泛型類.</param>
        /// <returns>int.</returns>
        public static int Update<T>(string sql, List<T> t)
              where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Execute(sql, t);
            }
        }

        /// <summary>
        /// 查詢.
        /// </summary>
        /// <typeparam name="T">實體類型.</typeparam>
        /// <param name="sql">傳入sql執(zhí)行語句.</param>
        /// <returns>泛型類.</returns>
        public static List<T> Query<T>(string sql)
             where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Query<T>(sql).ToList();
            }
        }

        /// <summary>
        /// 查詢指定數(shù)據(jù).
        /// </summary>
        /// <typeparam name="T">實體類型.</typeparam>
        /// <param name="sql">傳入sql執(zhí)行語句.</param>
        /// <param name="t">傳入泛型類.</param>
        /// <returns>類.</returns>
        public static T Query<T>(string sql, T t)
             where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Query<T>(sql, t).SingleOrDefault();
            }
        }

        /// <summary>
        /// 查詢的in操作.
        /// </summary>
        /// <typeparam name="T">實體類型.</typeparam>
        /// <param name="sql">傳入sql執(zhí)行語句.</param>
        /// <returns>泛型類.</returns>
        public static List<T> Query<T>(string sql, int[] ids)
            where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Query<T>(sql, new { ids }).ToList();
            }
        }

        /// <summary>
        /// 多語句操作.
        /// </summary>
        /// <typeparam name="T">實體類型.</typeparam>
        /// <param name="sql">傳入sql執(zhí)行語句.</param>
        public static void QueryMultiple(string sql)
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                var multiReader = connection.QueryMultiple(sql);
                var userInfo = multiReader.Read<UserInfo>();
                var student = multiReader.Read<Student>();

                multiReader.Dispose();
            }
        }
    }
}

  4、添加測試類Student.cs、UserInfo。表數(shù)據(jù)自己添加

 public class Student
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public int Age { get; set; }

        public string Memo { get; set; }

        public DateTime CreateTime { get; set; }

        public DateTime UpdateTime { get; set; }
    }
public class UserInfo
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public int Age { get; set; }

        public string Memo { get; set; }

        public DateTime CreateTime { get; set; }

        public DateTime UpdateTime { get; set; }
    }

  5、調(diào)用方法

//-----------------------------------------------------------------------
// <copyright file="Program.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>
// <author>John Doe</author>
//-----------------------------------------------------------------------

namespace CSharpStudy
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Dapper;

    internal class Program
    {
        private static void Main(string[] args)
        {
            // --------------添加--------------
            // UserInfo user = new UserInfo();
            // user.Name = "九九";
            // user.Age = 10;
            // user.Memo = "這是備注";
            // user.CreateTime = DateTime.Now;

            // string sql = "Insert into UserInfo(Name,Age,Memo,CreateTime) values (@name, @Age, @Memo,@CreateTime)";
            // int result = DapperTools.Add<UserInfo>(sql, user);
            // if (result > 0)
            // {
            //     Console.WriteLine("添加成功");
            //     Console.ReadKey();
            // }

            // --------------批量添加--------------
            // UserInfo user = new UserInfo();
            // user.Name = "李奎";
            // user.Age = 50;
            // user.Memo = "這是備注";
            // user.CreateTime = DateTime.Now;

            // UserInfo user2 = new UserInfo();
            // user2.Name = "梁山伯";
            // user2.Age = 54;
            // user2.Memo = "這是備注";
            // user2.CreateTime = DateTime.Now;

            // List<UserInfo> list = new List<UserInfo>();
            // list.Add(user);
            // list.Add(user2);

            // string sql = "Insert into UserInfo(Name,Age,Memo,CreateTime) values (@name, @Age, @Memo,@CreateTime)";
            // int result = DapperTools.Add<UserInfo>(sql, list);
            // if (result > 0)
            // {
            //     Console.WriteLine("添加成功");
            //     Console.ReadKey();
            // }

            // --------------刪除--------------
            // UserInfo user = new UserInfo();
            // user.Id = 18;

            // string sql = "delete from UserInfo where Id=@Id";
            // int result = DapperTools.Delete<UserInfo>(sql, user);
            // if (result > 0)
            // {
            //     Console.WriteLine("刪除成功");
            //     Console.ReadKey();
            // }

            // --------------批量刪除--------------
            // UserInfo user = new UserInfo();
            // user.Id = 15;

            // UserInfo user2 = new UserInfo();
            // user2.Id = 16;

            // List<UserInfo> list = new List<UserInfo>();
            // list.Add(user);
            // list.Add(user2);

            // string sql = "delete from UserInfo where Id=@Id";
            // int result = DapperTools.Delete<UserInfo>(sql, list);
            // if (result > 0)
            // {
            //     Console.WriteLine("添加成功");
            //     Console.ReadKey();
            // }

            // --------------修改--------------
            // UserInfo user = new UserInfo();
            // user.Id = 14;
            // user.Name = "九九";

            // string sql = "update UserInfo set Name=@Name,UpdateTime=GETDATE() where Id=@ID";
            // int result = DapperTools.Update<UserInfo>(sql, user);
            // if (result > 0)
            // {
            //     Console.WriteLine("修改成功");
            //     Console.ReadKey();
            // }

            // --------------批量修改--------------
            // UserInfo user = new UserInfo();
            // user.Id = 13;
            // user.Name = "王文";

            // UserInfo user2 = new UserInfo();
            // user2.Id = 14;
            // user2.Name = "冰冰";

            // List<UserInfo> list = new List<UserInfo>();
            // list.Add(user);
            // list.Add(user2);

            // string sql = "update UserInfo set Name=@Name,UpdateTime=GETDATE() where Id=@ID";
            // int result = DapperTools.Update<UserInfo>(sql, list);
            // if (result > 0)
            // {
            //     Console.WriteLine("修改成功");
            //     Console.ReadKey();
            // }

            // --------------查詢--------------
            // string sql = "select * from UserInfo";
            // List<UserInfo> list = DapperTools.Query<UserInfo>(sql);
            // foreach (var item in list)
            // {
            //     Console.WriteLine(item.Id + "-" + item.Name + "-" + item.Age + "-" + item.Memo);
            // }

            // Console.ReadKey();

            // --------------查詢指定數(shù)據(jù)--------------
            // UserInfo user = new UserInfo();
            // user.Id = 14;

            // string sql = "select * from UserInfo where Id=@Id";
            // UserInfo userInfo = DapperTools.Query<UserInfo>(sql, user);

            // Console.WriteLine(userInfo.Id + "-" + userInfo.Name + "-" + userInfo.Age + "-" + userInfo.Memo);
            // Console.ReadKey();

            // --------------查詢的in操作--------------
            // string sql = "select * from UserInfo where Id in @ids";
            // int[] ids = { 1, 2 };

            // List<UserInfo> list = DapperTools.Query<UserInfo>(sql, ids);
            // foreach (var item in list)
            // {
            //     Console.WriteLine(item.Id + "-" + item.Name + "-" + item.Age + "-" + item.Memo);
            // }

            // --------------多語句操作--------------
            // string sql = "select * from userinfo;select * from student";

            // DapperTools.QueryMultiple(sql);
        }
    }
}

源代碼:

鏈接: https://pan.baidu.com/s/1IM3diCqJCoSpvr11H6zddQ

提取碼: 6ag9

后續(xù)會陸續(xù)更新其他資料,喜歡請關(guān)注哦!

我的博客:https://www.cnblogs.com/duhaoran

到此這篇關(guān)于C# Dapper的使用的文章就介紹到這了,更多相關(guān)C#使用Dapper內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#中l(wèi)ist用法實例

    C#中l(wèi)ist用法實例

    這篇文章主要介紹了C#中l(wèi)ist用法,結(jié)合實例形式分析了C#中l(wèi)ist排序、運算、轉(zhuǎn)換等常見操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • C#從字符串中指定位置移除子字符串的方法

    C#從字符串中指定位置移除子字符串的方法

    這篇文章主要介紹了C#從字符串中指定位置移除子字符串的方法,涉及C#中Remove方法的使用技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • C#6.0中你可能不知道的新特性總結(jié)

    C#6.0中你可能不知道的新特性總結(jié)

    C# 6 已經(jīng)出來很久了,但最近發(fā)現(xiàn)真的有必要整理下,下面這篇文章主要給大家介紹了關(guān)于C#6.0中一些你可能不知道的新特性的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2018-04-04
  • C#異步的世界(上)

    C#異步的世界(上)

    這篇文章主要介紹了C#異步的世界,對異步感興趣的同學(xué),可以參考下
    2021-04-04
  • unity實現(xiàn)鼠標(biāo)跟隨(ITween)

    unity實現(xiàn)鼠標(biāo)跟隨(ITween)

    這篇文章主要為大家詳細(xì)介紹了unity實現(xiàn)鼠標(biāo)跟隨,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 在WinForm中發(fā)送HTTP請求的實現(xiàn)方法

    在WinForm中發(fā)送HTTP請求的實現(xiàn)方法

    下面小編就為大家?guī)硪黄赪inForm中發(fā)送HTTP請求的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • C#實現(xiàn)listview Group收縮擴展的方法

    C#實現(xiàn)listview Group收縮擴展的方法

    這篇文章主要介紹了C#實現(xiàn)listview Group收縮擴展的方法,結(jié)合實例形式分析了listview控件的相關(guān)使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-03-03
  • C#中word導(dǎo)出功能的騷操作詳解

    C#中word導(dǎo)出功能的騷操作詳解

    這篇文章主要給大家介紹了關(guān)于C#中word導(dǎo)出功能騷操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C#檢測兩個矩陣是否相等的方法

    C#檢測兩個矩陣是否相等的方法

    這篇文章主要介紹了C#檢測兩個矩陣是否相等的方法,涉及C#進(jìn)行數(shù)組操作的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • 在.NET中讀取嵌入和使用資源文件的方法

    在.NET中讀取嵌入和使用資源文件的方法

    本文分別介紹了使用GetManifestResourceStream讀取嵌入資源,和使用. resx資源文件嵌入資源,希望對大家有所幫助。
    2016-05-05

最新評論