old_flsystem/类库/Api.Framework/Easy4/Common/TableInfo.cs

191 lines
5.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using Easy4net.Context;
namespace Easy4net.Common
{
/// <summary>
/// 数据库表信息实体类
/// </summary>
public class TableInfo
{
/// <summary>
/// 数据库表名
/// </summary>
private string tableName;
/// <summary>
/// 主键生成方式
/// </summary>
private int strategy;
/// <summary>
/// 主键信息
/// </summary>
private IdInfo id = new IdInfo();
/// <summary>
/// 普通字段信息集合
/// </summary>
private ColumnInfo columns = new ColumnInfo();
/// <summary>
/// 属性到字段信息的映射集合
/// </summary>
private Map propToColumn = new Map();
/// <summary>
/// 字段信息到属性的映射集合
/// </summary>
private Map columnToProp = new Map();
/// <summary>
/// 是否不具备自增长键
/// </summary>
public bool NoAutomaticKey
{
get;
set;
}
/// <summary>
/// 数据库表名
/// </summary>
public string TableName
{
get { return tableName; }
set { tableName = value; }
}
/// <summary>
/// 主键生成方式,参考GenerationType定义
/// </summary>
public int Strategy
{
get { return strategy; }
set { strategy = value; }
}
/// <summary>
/// 主键字段信息
/// </summary>
public IdInfo Id
{
get { return id; }
set { id = value; }
}
/// <summary>
/// 普通字段信息集合
/// </summary>
public ColumnInfo Columns
{
get { return columns; }
set { columns = value; }
}
/// <summary>
/// 实体类属性对应字段信息映射集合
/// </summary>
public Map PropToColumn
{
get { return propToColumn; }
set { propToColumn = value; }
}
/// <summary>
/// 字段信息对应实体类属性映射集合
/// </summary>
public Map ColumnToProp
{
get { return columnToProp; }
set { columnToProp = value; }
}
/// <summary>
/// 获取本数据库表信息中的参数键值集合
/// </summary>
/// <returns></returns>
public List<IDbDataParameter> GetParameterList()
{
if (this.Columns == null || this.Columns.Count == 0) return new List<IDbDataParameter>();
Session session = SessionThreadLocal.Get();
List<IDbDataParameter> paramList = new List<IDbDataParameter>();
foreach (string key in this.Columns.Keys)
{
if (!string.IsNullOrEmpty(key.Trim()))
{
object value = this.Columns[key];
if (value != null)
{
IDbDataParameter param = session.DbFactory.CreateDbParameter();
param.ParameterName = key;
param.Value = value;
paramList.Add(param);
}
}
}
return paramList;
}
/// <summary>
/// 将参数集合转为参数数组
/// </summary>
/// <param name="paramList">参数集合</param>
/// <returns></returns>
public IDbDataParameter[] GetParameters(List<IDbDataParameter> paramList)
{
Session session = SessionThreadLocal.Get();
int i = 0;
IDbDataParameter[] parameters = session.DbFactory.CreateDbParameters(paramList.Count);
foreach (IDbDataParameter dbParameter in paramList)
{
parameters[i] = dbParameter;
i++;
}
return parameters;
}
/// <summary>
/// 获取本数据库表信息中的参数键值数组
/// </summary>
/// <returns></returns>
public IDbDataParameter[] GetParameters()
{
Session session = SessionThreadLocal.Get();
if (this.Columns == null || this.Columns.Count == 0) return session.DbFactory.CreateDbParameters(1);
List<IDbDataParameter> paramList = new List<IDbDataParameter>();
foreach (string key in this.Columns.Keys)
{
if (!string.IsNullOrEmpty(key.Trim()))
{
object value = this.Columns[key];
if (value != null)
{
IDbDataParameter param = session.DbFactory.CreateDbParameter();
param.ParameterName = key;
param.Value = value;
paramList.Add(param);
}
}
}
int i = 0;
IDbDataParameter[] parameters = session.DbFactory.CreateDbParameters(paramList.Count);
foreach (IDbDataParameter dbParameter in paramList)
{
parameters[i] = dbParameter;
i++;
}
return parameters;
}
}
}