C# Dapper 操作Sqlite数据库

2 篇文章 0 订阅

首先通过nuget安装Dapper以及Sqlite

创建实体模型

using System;

namespace SQLiteDemo.Model
{
    public class Customer
    {
        public long Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime DateOfBirth { get; set; }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SQLiteDemo.Model
{
    public class Teacher
    {
        public long Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime DateOfBirth { get; set; }
    }
}

创建通用接口

using SQLiteDemo.Model;

namespace SQLiteDemo.Data
{
    public interface ICustomerRepository<T>
    {
        T Get<T>(long id, string sql);
        void Save(T customer,string sql);
    }
}

创建数据库连接类

using System;
using System.Data.SQLite;

namespace SQLiteDemo.Data
{
    public class SqLiteBaseRepository
    {
        public static string DbFile
        {
            get { return Environment.CurrentDirectory + "\\SimpleDb.sqlite"; }
        }

        public static SQLiteConnection SimpleDbConnection()
        {
            return new SQLiteConnection("Data Source=" + DbFile);
        }
    }
}

数据库实体映射crud

using System.IO;
using System.Linq;
using Dapper;
using SQLiteDemo.Model;

namespace SQLiteDemo.Data
{
    public class SqLiteCustomerRepository<T> : SqLiteBaseRepository, ICustomerRepository<T>
    {
        public T Get<T>(long id,string sql)
        {
            if (!File.Exists(DbFile)) return default(T);

            using (var cnn = SimpleDbConnection())
            {
                cnn.Open();
                T result = cnn.Query<T>(
                    sql, new { id }).FirstOrDefault();
                return result;
            }
        }

        public void Save(T customer,string sql)
        {
            using (var cnn = SimpleDbConnection())
            {
                cnn.Open();
                cnn.Query<long>(
                    sql, customer).First();
            }
        }

        public static void CreateDatabase(string createdb)
        {
            using (var cnn = SimpleDbConnection())
            {
                cnn.Open();
                cnn.Execute(createdb
                    );
            }
        }
    }
}

demo

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SQLiteDemo.Data;
using SQLiteDemo.Model;

namespace SQLiteDemo
{
    class Program
    {
        static void Main(string[] args)
        {

            SqLiteCustomerRepository<Customer>.CreateDatabase(@"CREATE TABLE IF NOT EXISTS Customer
                      (
                         ID                                  integer primary key AUTOINCREMENT,
                         FirstName                           varchar(100) not null,
                         LastName                            varchar(100) not null,
                         DateOfBirth                         datetime not null
                      )");

            SqLiteCustomerRepository<Customer> rep = new SqLiteCustomerRepository<Customer>();
            var customer = new Customer
                {
                    FirstName = "Sergey",
                    LastName = "Maskalik",
                    DateOfBirth = DateTime.Now
                };
            rep.Save(customer, @"INSERT INTO Customer 
                    ( FirstName, LastName, DateOfBirth ) VALUES 
                    ( @FirstName, @LastName, @DateOfBirth );
                    select last_insert_rowid()");

            Customer retrievedCustomer = rep.Get<Customer>(customer.Id, @"SELECT Id, FirstName, LastName, DateOfBirth
                    FROM Customer
                    WHERE Id = @id");



            SqLiteCustomerRepository<Teacher> repp = new SqLiteCustomerRepository<Teacher>();
            var Teacher = new Teacher
            {
                FirstName = "Sergey",
                LastName = "Maskalik",
                DateOfBirth = DateTime.Now
            };
            SqLiteCustomerRepository<Teacher>.CreateDatabase(@"CREATE TABLE IF NOT EXISTS Teacher
                      (
                         ID                                  integer primary key AUTOINCREMENT,
                         FirstName                           varchar(100) not null,
                         LastName                            varchar(100) not null,
                         DateOfBirth                         datetime not null
                      )");
            repp.Save(Teacher, @"INSERT INTO Teacher 
                    ( FirstName, LastName, DateOfBirth ) VALUES 
                    ( @FirstName, @LastName, @DateOfBirth );
                    select last_insert_rowid()");

            Teacher retrievedTeacher = repp.Get<Teacher>(Teacher.Id, @"SELECT Id, FirstName, LastName, DateOfBirth
                    FROM Teacher
                    WHERE Id = @id");



        }
    }
}

https://github.com/xdqt/Dapper-SQLiteDemo.git

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值