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 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
