简洁ORM框架_Dapper的用法——附C#源码

版权声明:随便转载,互相学习,注明来源即可,不想注明也没事 https://blog.csdn.net/yangwohenmai1/article/details/89383942

程序和测试数据的github下载地址:https://github.com/yangwohenmai/TEST/tree/master/DapperDB

项目这里要引用一个System.Data.SQLite.dll  一个Dapper.dll

链接数据库方法如下,这里数据库用的是轻量级的sqlite,方便我上传数据库给大家测试用

/// <summary>
        /// 链接数据库
        /// </summary>
        /// <param name="connConfig"></param>
        /// <returns></returns>
        public static IDbConnection GetConnection(string connConfig)
        {
            IDbConnection conn = null;

            if (string.IsNullOrEmpty(connConfig))
            {
                return null;
            }

            try
            {
                conn = new SQLiteConnection(connConfig);
                //打开数据库链接
                conn.Open();
            }
            catch (Exception ex)
            {
            }
            return conn;
        }

 定义一个查询数据库方法

/// <summary>
        /// ORM数据映射
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="connConfig"></param>
        /// <returns></returns>
        public static IEnumerable<T> Select<T>(string sql, string connConfig)
        {
            IEnumerable<T> list = null;

            using (IDbConnection conn = GetConnection(connConfig))
            {
                try
                {
                    //传统sql in (1, 2, 3)写法
                    //conn.Query<TestTable>("SELECT * FROM TestTable  WHERE id IN (@ids) ",new { ids = IDs.ToArray()})
                    list = conn.Query<T>(sql);
                    //list = conn.Query<DataInfoStru>(sql, new { id = ID });
                }
                catch (Exception ex)
                {
                }
            }
            return list;
        }

 这是调用查询条件,这里数据库用的是文本级别的SQLite数据库,数据库我已经打包在程序里了

/// <summary>
        /// 获取数据
        /// </summary>
        /// <returns></returns>
        public static List<TaskDriverStru> GetTask()
        {
            List<TaskDriverStru> tempDataList = new List<TaskDriverStru>();
            string errorMsg = string.Empty;

            string sql = @"SELECT * FROM TaskStatus;";

            string str_ConfigFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "finchina.db3");
            string SqlitePath = string.Format("Data Source={0};Pooling=true;FailIfMissing=false", str_ConfigFilePath);

            var list = Select<TaskDriverStru>(sql, SqlitePath);
            if (!string.IsNullOrEmpty(errorMsg))
            {
                return null;
            }

            foreach (TaskDriverStru item in list)
            {
                tempDataList.Add(item);
            }

            return tempDataList;
        }

Dapper是一个ORM,自然少不了一个和数据库字段对应的实体类

public class TaskDriverStru
    {
        /// <summary>
        /// Id
        /// </summary>
        public string Id { get; set; }
        /// <summary>
        /// 任务ID
        /// </summary>
        public string taskId { get; set; }
        /// <summary>
        /// 用户名
        /// </summary>
        public string userName { get; set; }
        /// <summary>
        /// 任务名
        /// </summary>
        public string TaskName { get; set; }
        /// <summary>
        /// 表名
        /// </summary>
        public string Tables { get; set; }
        /// <summary>
        /// 任务状态
        /// </summary>
        public string taskStatus { get; set; }
        /// <summary>
        /// 时间戳
        /// </summary>
        public string TMSP1 { get; set; }
        /// <summary>
        /// 时间戳
        /// </summary>
        public string TMSP2 { get; set; }
        /// <summary>
        /// 时间戳
        /// </summary>
        public string TMSP3 { get; set; }
        /// <summary>
        /// 是否初始化
        /// </summary>
        public bool Init { get; set; }
    }

全部代码如下:项目和数据库可以从文章开头给出的github链接上下载

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dapper;
using System.IO;
using System.Data.SQLite;

namespace DapperDB
{
    class Program
    {
        static void Main(string[] args)
        {
            List<TaskDriverStru> list = GetTask();
            foreach(var item in list)
            {
                Console.WriteLine(item.Id);
                Console.WriteLine(item.Init);
                Console.WriteLine(item.Tables);
                Console.WriteLine(item.taskId);
                Console.WriteLine(item.TaskName);
                Console.WriteLine(item.taskStatus);
                Console.WriteLine(item.userName);
            }
            Console.ReadLine();
        }



        /// <summary>
        /// 获取数据
        /// </summary>
        /// <returns></returns>
        public static List<TaskDriverStru> GetTask()
        {
            List<TaskDriverStru> tempDataList = new List<TaskDriverStru>();
            string errorMsg = string.Empty;

            string sql = @"SELECT * FROM TaskStatus;";

            string str_ConfigFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "finchina.db3");
            string SqlitePath = string.Format("Data Source={0};Pooling=true;FailIfMissing=false", str_ConfigFilePath);

            var list = Select<TaskDriverStru>(sql, SqlitePath);
            if (!string.IsNullOrEmpty(errorMsg))
            {
                return null;
            }

            foreach (TaskDriverStru item in list)
            {
                tempDataList.Add(item);
            }

            return tempDataList;
        }





        /// <summary>
        /// ORM数据映射
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="connConfig"></param>
        /// <returns></returns>
        public static IEnumerable<T> Select<T>(string sql, string connConfig)
        {
            IEnumerable<T> list = null;

            using (IDbConnection conn = GetConnection(connConfig))
            {
                try
                {
                    //传统sql in (1, 2, 3)写法
                    //conn.Query<TestTable>("SELECT * FROM TestTable  WHERE id IN (@ids) ",new { ids = IDs.ToArray()})
                    list = conn.Query<T>(sql);
                    //list = conn.Query<DataInfoStru>(sql, new { id = ID });
                }
                catch (Exception ex)
                {
                }
            }
            return list;
        }

        /// <summary>
        /// 链接数据库
        /// </summary>
        /// <param name="connConfig"></param>
        /// <returns></returns>
        public static IDbConnection GetConnection(string connConfig)
        {
            IDbConnection conn = null;

            if (string.IsNullOrEmpty(connConfig))
            {
                return null;
            }

            try
            {
                conn = new SQLiteConnection(connConfig);
                //打开数据库链接
                conn.Open();
            }
            catch (Exception ex)
            {
            }
            return conn;
        }

    }


    public class TaskDriverStru
    {
        /// <summary>
        /// Id
        /// </summary>
        public string Id { get; set; }
        /// <summary>
        /// 任务ID
        /// </summary>
        public string taskId { get; set; }
        /// <summary>
        /// 用户名
        /// </summary>
        public string userName { get; set; }
        /// <summary>
        /// 任务名
        /// </summary>
        public string TaskName { get; set; }
        /// <summary>
        /// 表名
        /// </summary>
        public string Tables { get; set; }
        /// <summary>
        /// 任务状态
        /// </summary>
        public string taskStatus { get; set; }
        /// <summary>
        /// 时间戳
        /// </summary>
        public string TMSP1 { get; set; }
        /// <summary>
        /// 时间戳
        /// </summary>
        public string TMSP2 { get; set; }
        /// <summary>
        /// 时间戳
        /// </summary>
        public string TMSP3 { get; set; }
        /// <summary>
        /// 是否初始化
        /// </summary>
        public bool Init { get; set; }
    }


}

猜你喜欢

转载自blog.csdn.net/yangwohenmai1/article/details/89383942