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