#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
|
{
|
/// <summary>
|
/// DAL数据层:dalFieldNameDefs
|
/// </summary>
|
[DefaultORM_UpdateMode(typeof(sys_FieldNameDefs), true)]
|
public class dalFieldNameDefs : dalBaseDataDict, IBridge_FieldNameDefs
|
{
|
/// <summary>
|
/// 构造器
|
/// </summary>
|
/// <param name="loginer">当前登录用户</param>
|
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();
|
}
|
|
/// <summary>
|
/// 获取账套数据库名称列表
|
/// </summary>
|
/// <returns></returns>
|
public DataTable GetDataBaseList()
|
{
|
return DatabaseProvider.SystemDatabase.GetTable(
|
"sp_sys_GetDataSetDBs", "DBs");
|
}
|
|
/// <summary>
|
/// 获取字段列表
|
/// </summary>
|
/// <param name="databaseName"></param>
|
/// <param name="tableName"></param>
|
/// <returns></returns>
|
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);
|
}
|
|
/// <summary>
|
/// 获取数据日志字段配置(sys_LogFields表)的数据,关联查询sys_FieldNameDefs的DisplayName字段
|
/// </summary>
|
/// <param name="DatasetDB"></param>
|
/// <param name="DBName"></param>
|
/// <param name="tableName"></param>
|
/// <returns></returns>
|
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];
|
}
|
|
/// <summary>
|
/// 获取账套数据库的表名
|
/// </summary>
|
/// <param name="DBName">账套数据库名</param>
|
/// <returns></returns>
|
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);
|
}
|
|
/// <summary>
|
/// 同步表结构到系统数据库的sys_FieldNameDefs表
|
/// </summary>
|
/// <param name="tableName"></param>
|
/// <returns></returns>
|
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);
|
}
|
|
/// <summary>
|
/// 根据表名获取该表的SQL命令生成器
|
/// </summary>
|
/// <param name="tableName">表名</param>
|
/// <returns></returns>
|
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
|