📄 builderdal.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Data.SqlClient;
using LTP.Utility;
using LTP.IDBO;
using LTP.CodeHelper;
namespace LTP.BuilderDALELParam
{
/// <summary>
/// 数据访问层代码构造器(Parameter方式)
/// </summary>
public class BuilderDAL : LTP.IBuilder.IBuilderDAL
{
#region 私有变量
protected string _key = "ID";//标识列,或主键字段
protected string _keyType = "int";//标识列,或主键字段类型
#endregion
#region 公有属性
IDbObject dbobj;
private string _dbname;
private string _tablename;
private string _modelname; //model类名
private string _dalname;//dal类名
private List<ColumnInfo> _fieldlist;
private List<ColumnInfo> _keys; // 主键或条件字段列表
private string _namespace; //顶级命名空间名
private string _folder; //所在文件夹
private string _dbhelperName;//数据库访问类名
private string _modelpath;
private string _dalpath;
private string _idalpath;
private string _iclass;
private string _procprefix;
public IDbObject DbObject
{
set { dbobj = value; }
get { return dbobj; }
}
/// <summary>
/// 库名
/// </summary>
public string DbName
{
set { _dbname = value; }
get { return _dbname; }
}
/// <summary>
/// 表名
/// </summary>
public string TableName
{
set { _tablename = value; }
get { return _tablename; }
}
/// <summary>
/// 选择要生成的字段集合
/// </summary>
public List<ColumnInfo> Fieldlist
{
set { _fieldlist = value; }
get { return _fieldlist; }
}
/// <summary>
/// 主键或条件字段的集合
/// </summary>
public List<ColumnInfo> Keys
{
set { _keys = value; }
get { return _keys; }
}
/// <summary>
/// 顶级命名空间名
/// </summary>
public string NameSpace
{
set { _namespace = value; }
get { return _namespace; }
}
/// <summary>
/// 所在文件夹
/// </summary>
public string Folder
{
set { _folder = value; }
get { return _folder; }
}
/*============================*/
/// <summary>
/// 实体类的命名空间
/// </summary>
public string Modelpath
{
set { _modelpath = value; }
get { return _modelpath; }
}
/// <summary>
/// 类名
/// </summary>
public string ModelName
{
set { _modelname = value; }
get { return _modelname; }
}
/// <summary>
/// 实体类的整个命名空间 + 类名,即等于 Modelpath+ModelName
/// </summary>
public string ModelSpace
{
get { return Modelpath + "." + ModelName; }
}
/*============================*/
/// <summary>
/// 数据层的命名空间
/// </summary>
public string DALpath
{
set { _dalpath = value; }
get
{
return _dalpath;
}
}
public string DALName
{
set { _dalname = value; }
get { return _dalname; }
}
/*============================*/
/// <summary>
/// 接口的命名空间
/// </summary>
public string IDALpath
{
set { _idalpath = value; }
get
{
return _idalpath;
}
}
/// <summary>
/// 接口类名
/// </summary>
public string IClass
{
set { _iclass = value; }
get { return _iclass; }
}
/*============================*/
/// <summary>
/// 数据库访问类名
/// </summary>
public string DbHelperName
{
set { _dbhelperName = value; }
get { return _dbhelperName; }
}
/// <summary>
/// 存储过程前缀
/// </summary>
public string ProcPrefix
{
set { _procprefix = value; }
get { return _procprefix; }
}
#endregion
#region 构造属性
/// <summary>
/// 所选字段的 select 列表
/// </summary>
public string Fieldstrlist
{
get
{
StringPlus _fields = new StringPlus();
foreach (ColumnInfo obj in Fieldlist)
{
_fields.Append(obj.ColumnName + ",");
}
_fields.DelLastComma();
return _fields.Value;
}
}
/// <summary>
/// 不同数据库字段类型
/// </summary>
public string DbParaDbType
{
get
{
return "DbType";
}
}
/// <summary>
/// 存储过程参数 调用符号@
/// </summary>
public string preParameter
{
get
{
return "@";
}
}
/// <summary>
/// 列中是否有标识列
/// </summary>
public bool IsHasIdentity
{
get
{
bool isid = false;
if (_keys.Count > 0)
{
foreach (ColumnInfo key in _keys)
{
if (key.IsIdentity)
{
isid = true;
}
}
}
return isid;
}
}
private string KeysNullTip
{
get
{
if (_keys.Count == 0)
{
return "//该表无主键信息,请自定义主键/条件字段";
}
else
{
return "";
}
}
}
#endregion
#region 构造函数
public BuilderDAL()
{
}
public BuilderDAL(IDbObject idbobj)
{
dbobj = idbobj;
}
public BuilderDAL(IDbObject idbobj, string dbname, string tablename, string modelname, string dalName,
List<ColumnInfo> fieldlist, List<ColumnInfo> keys, string namepace,
string folder, string dbherlpername, string modelpath, string modelspace,
string dalpath, string idalpath, string iclass)
{
dbobj = idbobj;
_dbname = dbname;
_tablename = tablename;
_modelname = modelname;
_dalname = dalName;
_namespace = namepace;
_folder = folder;
_dbhelperName = dbherlpername;
_modelpath = modelpath;
_dalpath = dalpath;
_idalpath = idalpath;
_iclass = iclass;
Fieldlist = fieldlist;
Keys = keys;
foreach (ColumnInfo key in _keys)
{
_key = key.ColumnName;
_keyType = key.TypeName;
if (key.IsIdentity)
{
_key = key.ColumnName;
_keyType = CodeCommon.DbTypeToCS(key.TypeName);
break;
}
}
}
#endregion
#region 根据列信息 得到参数的列表
/// <summary>
/// 得到Where条件语句 - Parameter方式 (例如:用于Exists Delete GetModel 的where)
/// </summary>
/// <param name="keys"></param>
/// <returns></returns>
public string GetWhereExpression(List<ColumnInfo> keys)
{
StringPlus strclass = new StringPlus();
foreach (ColumnInfo key in keys)
{
strclass.Append(key.ColumnName + "=" + preParameter + key.ColumnName + " and ");
}
strclass.DelLastChar("and");
return strclass.Value;
}
/// <summary>
/// 生成sql语句中的参数列表(例如:用于Add Exists Update Delete GetModel 的参数传入)
/// </summary>
/// <param name="keys"></param>
/// <returns></returns>
public string GetPreParameter(List<ColumnInfo> keys)
{
StringPlus strclass = new StringPlus();
foreach (ColumnInfo key in keys)
{
strclass.AppendSpaceLine(3, "db.AddInParameter(dbCommand, \"" + key.ColumnName + "\", DbType." +CSToProcType(key.TypeName) + "," + key.ColumnName + ");");
}
return strclass.Value;
}
#endregion
#region 数据层(整个类)
/// <summary>
/// 得到整个类的代码
/// </summary>
public string GetDALCode(bool Maxid, bool Exists, bool Add, bool Update, bool Delete, bool GetModel, bool List)
{
StringPlus strclass = new StringPlus();
strclass.AppendLine("using System;");
strclass.AppendLine("using System.Data;");
strclass.AppendLine("using System.Text;");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -