src/02_Data/Adapters/Data.Adapter.Sqlite/SqliteDbAdapter.cs

(开头部分) 5KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Data;
using System.Text;
using Dapper;
using Microsoft.Data.Sqlite;
using Mkh.Data.Abstractions.Adapter;
using Mkh.Data.Abstractions.Descriptors;
using Mkh.Utils.Helpers;

namespace Mkh.Data.Adapter.Sqlite;

public class SqliteDbAdapter : DbAdapterAbstract
{
    public SqliteDbAdapter()
    {
        SqlMapper.AddTypeHandler(new GuidTypeHandler());
    }

    public override DbProvider Provider => DbProvider.Sqlite;

    /// <summary>
    /// 左引号
    /// </summary>
    public override char LeftQuote => '[';

    /// <summary>
    /// 右引号
    /// </summary>
    public override char RightQuote => ']';

    /// <summary>
    /// 获取最后新增ID语句
    /// </summary>
    public override string IdentitySql => "SELECT LAST_INSERT_ROWID() ID;";

    public override IDbConnection NewConnection(string connectionString)
    {
        return new SqliteConnection(connectionString);
    }

    public override string GenerateFirstSql(string select, string table, string where, string sort, string groupBy = null, string having = null)
    {
        return GeneratePagingSql(select, table, where, sort, 0, 1, groupBy, having);
    }

    public override string GeneratePagingSql(string select, string table, string where, string sort, int skip, int take, string groupBy = null, string having = null)
    {
        var sqlBuilder = new StringBuilder();
        sqlBuilder.AppendFormat("SELECT {0} FROM {1}", select, table);
        if (where.NotNull())
            sqlBuilder.AppendFormat(" {0}", where);

        if (groupBy.NotNull())
            sqlBuilder.Append(groupBy);

        if (having.NotNull())
            sqlBuilder.Append(having);

        if (sort.NotNull())
            sqlBuilder.AppendFormat("{0}", sort);
后面还有 124 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。