#region using System; using System.Data; using System.Text; using CSFramework.DB; using CSFrameworkV5.Common; using CSFrameworkV5.Core; using CSFrameworkV5.Core.CodeGenerator; using CSFrameworkV5.Interfaces; using CSFrameworkV5.Models; #endregion /*=================================================================== * 程序说明: FieldNameDefs的数据访问层源码 * 作者资料: 楚楚.C/S框架网 * 创建日期: 2014/05/23 08:57:01 * 最后修改: 2014/05/23 08:57:01 * * 注: 本代码由代码生成器(Code Generator)自动生成 * 版权所有 copyright 2006~2014, C/S框架网 http://www.csframework.com *===================================================================*/ namespace CSFrameworkV5.DataAccess { /// /// DAL数据层:dalFieldNameDefs /// [DefaultORM_UpdateMode(typeof(sys_FieldNameDefs), true)] public class dalFieldNameDefs : dalBaseDataDict, IBridge_FieldNameDefs { /// /// 构造器 /// /// 当前登录用户 public dalFieldNameDefs(Loginer loginer) : base(loginer) { _KeyName = sys_FieldNameDefs.__KeyName; //主键字段 _TableName = sys_FieldNameDefs.__TableName; //表名 _ModelType = typeof(sys_FieldNameDefs); //指定ORM模型 _Database = DatabaseProvider.SystemDatabase; } public string GetCaption(string dbName, string fieldName) { var sql = "SELECT DISTINCT DisplayName FROM sys_FieldNameDefs WHERE DBName=@DBName AND FieldName=@FieldName AND FieldName<>DisplayName AND ISNULL(DisplayName,'')<>''"; var sp = _Database.CreateCommand(sql); sp.AddParam("DBName", DbType.String, dbName); sp.AddParam("FieldName", DbType.String, fieldName); return DatabaseProvider.SystemDatabase.ExecuteScalar(sp.Command) .ToStringEx(); } /// /// 获取账套数据库名称列表 /// /// public DataTable GetDataBaseList() { return DatabaseProvider.SystemDatabase.GetTable( "sp_sys_GetDataSetDBs", "DBs"); } /// /// 获取字段列表 /// /// /// /// public DataTable GetFields(string databaseName, string tableName) { var sql = $"SELECT * FROM sys_FieldNameDefs WHERE DBName={_Database.ParamSymboName}DBName AND TableName={_Database.ParamSymboName}TableName ORDER BY FieldOrder;"; var cmd = _Database.CreateCommand(sql); cmd.AddParam("DBName", databaseName); cmd.AddParam("TableName", tableName); return _Database.GetTable(sql, sys_FieldNameDefs.__TableName); } /// /// 获取数据日志字段配置(sys_LogFields表)的数据,关联查询sys_FieldNameDefs的DisplayName字段 /// /// /// /// /// public DataTable GetTableFields(string DatasetDB, string DBName, string tableName) { var sp = _Database.CreateSqlProc( "sp_sys_GetTableFieldsByDBName"); //sp在系统数据库 sp.AddParam("SystemDBName", DbType.String, Globals.DEF_SYSTEM_DBName); sp.AddParam("BusinessDBName", DbType.String, DatasetDB); sp.AddParam("DBName", DbType.String, DBName); sp.AddParam("TableName", DbType.String, tableName); var ds = DatabaseProvider.SystemDatabase.GetDataSet(sp.Command); //系统数据库 ds.Tables[0].TableName = sys_LogFields.__TableName; return ds.Tables[0]; } /// /// 获取账套数据库的表名 /// /// 账套数据库名 /// public DataTable GetTableNames(string DBName) { DataTable dtTmp; //特殊处理!!!SQL数据库仅能查当前数据库的表名称 if (DatabaseProvider.SystemDatabaseType == DatabaseType.SqlServer) { var db = DatabaseProvider.GetDatabaseByDbName(DBName); dtTmp = db.meta_GetTableNames(); } else { dtTmp = _Database.meta_GetTableNames(DBName); } var tmp = new DataTable(); tmp.Columns.Add("TableName", typeof(string)); foreach (DataRow R in dtTmp.Rows) tmp.Rows.Add(R["name"]); tmp.AcceptChanges(); return tmp; } public DataTable Search(string TableName, string FieldName, string DisplayName) { var cmd = _Database.CreateCommand(""); var sb = new StringBuilder(); sb.Append("SELECT * FROM sys_FieldNameDefs WHERE 1=1 "); if (string.IsNullOrEmpty(TableName) == false) { sb.Append( $" AND TableName ={_Database.ParamSymboName}TableName"); cmd.AddParam("TableName", TableName); } if (string.IsNullOrEmpty(FieldName) == false) { sb.Append( $" AND FieldName ={_Database.ParamSymboName}FieldName"); cmd.AddParam("FieldName", FieldName); } if (string.IsNullOrEmpty(DisplayName) == false) { sb.Append( $" AND DisplayName LIKE {_Database.ParamSymboName}DisplayName"); cmd.AddParam("DisplayName", "%" + DisplayName + "%"); } sb.Append(" ORDER BY " + sys_FieldNameDefs.__KeyName); sb.Append(";"); cmd.Command.CommandText = CodeSafeHelper.GetSafeSQL(sb.ToStringEx()); return _Database.GetTable(cmd.Command, sys_FieldNameDefs.__TableName); } /// /// 同步表结构到系统数据库的sys_FieldNameDefs表 /// /// /// public DataTable SyncTable(string DBName, string tableName) { var db = DatabaseProvider.GetDatabaseByDbName(DBName); var sp = db.CreateSqlProc("sp_sys_SyncTableFieldDef"); sp.AddParam("DBName", DbType.String, DBName); sp.AddParam("TableName", DbType.String, tableName); return db.GetTable(sp.Command, sys_FieldNameDefs.__TableName); } /// /// 根据表名获取该表的SQL命令生成器 /// /// 表名 /// protected override IGenerateSqlCommand CreateSqlGenerator( DataTable table) { Type ORM = null; if (table.TableName == sys_FieldNameDefs.__TableName) ORM = typeof(sys_FieldNameDefs); //指定表与ORM模型的对应关系 if (ORM == null) throw new Exception(table.TableName + "表没有ORM模型!"); return new GenerateSqlCmdByTableFields(ORM, table, GeneratorFactory); } } //public class } //namespace