#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