You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.8 KiB
C#
53 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Infrastructure;
|
|
using SqlSugar;
|
|
|
|
namespace OpenAuth.App
|
|
{
|
|
public class DbExtension
|
|
{
|
|
private ISqlSugarClient _context;
|
|
|
|
public DbExtension(ISqlSugarClient context)
|
|
{
|
|
_context = context;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取数据库一个表的所有属性值及属性描述
|
|
/// </summary>
|
|
/// <param name="moduleName">模块名称/表名</param>
|
|
/// <returns></returns>
|
|
public List<KeyDescription> GetProperties(Type type)
|
|
{
|
|
var result = new List<KeyDescription>();
|
|
|
|
var entity = _context.EntityMaintenance.GetEntityInfo(type);
|
|
|
|
foreach (var column in entity.Columns)
|
|
{
|
|
object[] objs = column.PropertyInfo.GetCustomAttributes(typeof(DescriptionAttribute), true);
|
|
var description = objs.Length > 0 ? ((DescriptionAttribute)objs[0]).Description : column.ColumnDescription;
|
|
if (string.IsNullOrEmpty(description)) description = column.DbColumnName;
|
|
|
|
object[] browsableObjs = column.PropertyInfo.GetCustomAttributes(typeof(BrowsableAttribute), true);
|
|
bool browsable = browsableObjs == null || browsableObjs.Length == 0 ||
|
|
((BrowsableAttribute)browsableObjs[0]).Browsable;
|
|
|
|
result.Add(new KeyDescription
|
|
{
|
|
Key = column.DbColumnName,
|
|
Description = description,
|
|
Browsable = browsable,
|
|
Type = column.PropertyInfo.PropertyType.Name
|
|
});
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
} |