开发代码生成功能
This commit is contained in:
@@ -42,6 +42,7 @@ namespace ZR.Repository.DbProvider
|
||||
//调式代码 用来打印SQL
|
||||
Db.Aop.OnLogExecuting = (sql, pars) =>
|
||||
{
|
||||
Console.BackgroundColor = ConsoleColor.Yellow;
|
||||
Console.WriteLine("【SQL语句】" + sql.ToLower() + "\r\n" + Db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
|
||||
};
|
||||
//出错打印日志
|
||||
@@ -51,5 +52,21 @@ namespace ZR.Repository.DbProvider
|
||||
Console.WriteLine();
|
||||
};
|
||||
}
|
||||
|
||||
public SqlSugarClient GetSugarDbContext(string dbName)
|
||||
{
|
||||
string connStr = ConfigUtils.Instance.GetConnectionStrings(OptionsSetting.Conn).Replace("{DbName}", dbName);
|
||||
int dbType = ConfigUtils.Instance.GetAppConfig(OptionsSetting.DbType, 0);
|
||||
|
||||
return new SqlSugarClient(new List<ConnectionConfig>()
|
||||
{
|
||||
new ConnectionConfig(){
|
||||
ConnectionString = connStr,
|
||||
DbType = (DbType)dbType,
|
||||
IsAutoCloseConnection = true,//开启自动释放模式和EF原理一样
|
||||
InitKeyType = InitKeyType.Attribute,//从特性读取主键和自增列信息
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,33 +13,62 @@ namespace ZR.Repository.System
|
||||
public class CodeGeneratorRepository : BaseRepository
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取数据库信息
|
||||
/// 获取数据库
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<DataBaseInfo> GetAllDataBaseInfos()
|
||||
public List<DataBaseInfo> GetAllDb()
|
||||
{
|
||||
return Db.Ado.SqlQuery<DataBaseInfo>("select name as DbName from master..sysdatabases ");
|
||||
//return Db.Ado.SqlQuery<DataBaseInfo>("select name as DbName from master..sysdatabases ");
|
||||
var list = Db.DbMaintenance.GetDataBaseList(Db);
|
||||
List<DataBaseInfo> dataBases = new List<DataBaseInfo>();
|
||||
list.ForEach(item =>
|
||||
{
|
||||
dataBases.Add(new DataBaseInfo() { DbName = item });
|
||||
});
|
||||
return dataBases;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取所有的表
|
||||
/// 根据数据库名获取所有的表
|
||||
/// </summary>
|
||||
/// <param name="dbName"></param>
|
||||
/// <param name="pager"></param>
|
||||
/// <param name="tableName"></param>
|
||||
/// <returns></returns>
|
||||
public List<DbTableInfo> GetAllTables(string dbName, string tableName, PagerInfo pager)
|
||||
public List<SqlSugar.DbTableInfo> GetAllTables(string dbName, string tableName, PagerInfo pager)
|
||||
{
|
||||
string sql = $"SELECT name as TableName FROM {dbName}..SysObjects Where XType='U'";
|
||||
int total = 0;
|
||||
var list = Db.SqlQueryable<DbTableInfo>(sql)
|
||||
//.WithCache(60 * 10)
|
||||
.WhereIF(!string.IsNullOrEmpty(tableName), it => it.TableName.Contains(tableName))
|
||||
.AddParameters(new { dbName })
|
||||
.OrderBy(x => x.TableName)
|
||||
.ToPageList(pager.PageNum, pager.PageSize, ref total);
|
||||
pager.TotalNum = total;
|
||||
return list;
|
||||
var tableList = GetSugarDbContext(dbName).DbMaintenance.GetTableInfoList(true);
|
||||
if (!string.IsNullOrEmpty(tableName))
|
||||
{
|
||||
tableList = tableList.Where(f => f.Name.Contains(tableName)).ToList();
|
||||
}
|
||||
pager.TotalNum = tableList.Count;
|
||||
return tableList.Skip(pager.PageSize * (pager.PageNum - 1)).Take(pager.PageSize).OrderBy(f => f.Name).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取表格列信息
|
||||
/// </summary>
|
||||
/// <param name="dbName"></param>
|
||||
/// <param name="tableName"></param>
|
||||
/// <returns></returns>
|
||||
public List<SqlSugar.DbColumnInfo> GetColumnInfo(string dbName, string tableName)
|
||||
{
|
||||
return GetSugarDbContext(dbName).DbMaintenance.GetColumnInfosByTableName(tableName, true);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前数据库表名
|
||||
/// </summary>
|
||||
/// <param name="tabList"></param>
|
||||
/// <returns></returns>
|
||||
public List<DbTableInfo> GetAllTables(string[] tabList)
|
||||
{
|
||||
string sql = @"SELECT tbs.name as TableName ,ds.value as Description FROM sys.tables tbs
|
||||
left join sys.extended_properties ds on ds.major_id=tbs.object_id and ds.minor_id=0";
|
||||
|
||||
return Db.SqlQueryable<DbTableInfo>(sql).WhereIF(tabList.Length > 0, x => tabList.Contains(x.TableName)).ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user