src/Czar.Cms.Core/Extensions/IDbConnectionExtensions.cs

(开头部分) 10KB

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

using Czar.Cms.Core.Models;
using Dapper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlTypes;
using System.Linq;
using System.Text;

namespace Czar.Cms.Core.Extensions
{
    /// <summary>
    /// yilezhu
    /// 2018.12.14
    /// IDbConnection扩展方法
    /// </summary>
    public static class IDbConnectionExtensions
    {
        /// <summary>
        /// 获取完整数据库信息包含表和列的信息
        /// </summary>
        /// <param name="dbConnection">数据库连接</param>
        /// <param name="dbType">数据库类型</param>
        /// <returns></returns>
        public static List<DbTable> GetCurrentDatabaseTableList(this IDbConnection dbConnection, DatabaseType dbType)
        {
            List<DbTable> tables = dbConnection.GetCurrentDatabaseAllTables(dbType);
            tables.ForEach(item =>
            {

                item.Columns = dbConnection.GetColumnsByTableName(dbType, item.TableName);

                item.Columns.ForEach(x =>
                {
                    var csharpType = DbColumnTypeCollection.DbColumnDataTypes.FirstOrDefault(t =>
                        t.DatabaseType == dbType && t.ColumnTypes.Split(',').Any(p =>
                            p.Trim().Equals(x.ColumnType, StringComparison.OrdinalIgnoreCase)))?.CSharpType;
                    if (string.IsNullOrEmpty(csharpType))
                    {
                        throw new SqlTypeException($"未从字典中找到\"{x.ColumnType}\"对应的C#数据类型,请更新DbColumnTypeCollection类型映射字典。");
                    }

                    x.CSharpType = csharpType;
                });
            });
            return tables;
        }
        /// <summary>
        /// 根据数据库类型获取数据库中所有的表
        /// </summary>
        /// <param name="dbConnection">数据库连接</param>
        /// <param name="dbType">数据库类型</param>
        /// <returns>数据库中表信息的列表</returns>
        private static List<DbTable> GetCurrentDatabaseAllTables(this IDbConnection dbConnection, DatabaseType dbType)
        {
            if (dbConnection == null) throw new ArgumentNullException(nameof(dbConnection));
            if (dbConnection.State == ConnectionState.Closed) dbConnection.Open();
            return dbConnection.Query<DbTable>(dbConnection.strGetAllTablesSql(dbType)).ToList();

        }
后面还有 128 行代码,解锁后查看完整代码

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

AI 解读

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

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