More
  • Advanced

.Net Core Project 從零開始 — 資料庫存取利器Dapper

ORM: 全名為Object Relationship Mapping(物件關聯對應),在進行物件上的操作使用的是強型別的模式,而非弱型別。

Dapper 在資料庫存取上幫了很大的忙,提供了新增、刪除、修改、查詢的Method,還有在查詢取出的資料時對資料進行對應轉換成強型別的物件。

Step 1 – add library Project: CakeMyBlog.DataAccessLayer Project

Step 2 – add dapper package in CakeMyBlog.DataAccessLayer Project

use .NET CLI

dotnet add package Dapper --version 2.0.30

Step 3 – add DataAccessService.cs for 管理資料庫連線字串(一些比較偏共用的東西)

namespace CakeMyBlog.Platform.DataAccess
{
    public class DataAccessService
    {
        /// <summary>
        /// 連線字串
        /// </summary>
        private static string _connectionStr = "Data Source=(Localdb)\\MSSQLLocalDB;Database=CakeMyBlog;Trusted_Connection=True;MultipleActiveResultSets=true;";

        /// <summary>
        /// 全域的資料庫連線字串
        /// </summary>
        public static string connectionStr { get { return _connectionStr; } }
    }
}

Step 4 – add MemberProvider.cs for get all me

using CakeMyBlog.Platform.DataAccess;
using Dapper;
using Model.DataAccessLayer;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;

namespace CakeMyBlog.DataAccessLayer
{
    public class MemberProvider
    {
        /// <summary>
        /// 查詢所有會員資料
        /// </summary>
        /// <returns></returns>
        public List<Member> GetAllMembers()
        {
            List<Member> members = null;

            string sqlCommand = @"
                    SELECT [Id]
                          ,[Name]
                          ,[Email]
                          ,[Gender]
                      FROM [Member]
                    ";

            using (var conn = new SqlConnection(DataAccessService.connectionStr)) {
                members = conn.Query<Member>(sqlCommand).ToList();
            }

            return members;
        }

    }

    
}

Step 5 – add Member.cs model for SQL command query and object relationship mapping

namespace Model.DataAccessLayer
{
    public class Member
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Email { get; set; }
        public string Gender { get; set; }
    }
}

Step 6 – Try and test GetAllMembers method

Conclusion: 在資料存取轉換上,Dapper幫了很大的忙省了很多事,相信如果用過ADO.NET的讀者在使用ADO.NET時將資料撈出來逐一手動 mapping成一個強型別的物件那樣的工作過就非常有感…..,個人認為使用Dapper相對彈性非常多。

.Net Core Project GitHub:Link

下一篇 .Net Core Project 從零開始 — 認識與實作Filter

Source : .Net Core Project 從零開始 — 資料庫存取利器Dapper

參考文章

另一種資料存取對映處理方式的選擇 — Dapper

Recent Articles

spot_img

Related Stories

Stay on op - Ge the daily news in your inbox