using System;
using System.Collections.Generic;
using System.Text;
using Ant.Frame;
using Ant.Data;
using Ant.Descriptors;
namespace Ant.ORM
{
public abstract class QueryCommandBuilder
{
private Type entityType;
///
/// 实体类型
///
public Type EntityType
{
get { return entityType; }
set { entityType = value; }
}
private SqlEnum _sqltype;
///
/// SQL语句类型
///
public SqlEnum SqlType
{
get { return _sqltype; }
set { _sqltype = value; }
}
private EntityPersistType persistType;
///
/// 操作类型
///
public EntityPersistType PersistType
{
get { return persistType; }
set { persistType = value; }
}
//private MakeShowFields _selectfield ;
/////
///// 显示的列
/////
//public MakeShowFields SelectField
//{
// get { return _selectfield; }
// set { _selectfield = value; }
//}
private string _showfield;
///
/// 显示的列
///
public string ShowField
{
get { return _showfield; }
set { _showfield = value; }
}
private MetaData _md;
///
/// 实体属性
///
public MetaData Md
{
get { return _md; }
set { _md = value; }
}
private FieldValueCollection fields;
///
/// 实体属性集合
///
public FieldValueCollection Fields
{
get { return fields; }
set { fields = value; }
}
private Type _childObjects;//子对象集合
///
/// 子对象类型
///
public Type ChildObjects
{
get { return this._childObjects; }
set { _childObjects = value; }
}
private QueryCommand _QueryComm;
///
/// 实体属性集合
///
public QueryCommand QueryComm
{
get { return _QueryComm; }
set { _QueryComm = value; }
}
private string _Top;
///
///
///
public string Top
{
get { return _Top; }
set { _Top = value; }
}
private int pageNo = 0;
///
/// 第几页
///
public int PageNo
{
get { return pageNo; }
set { pageNo = value; }
}
private int pageSize = 0;
///
/// 每页显示的条数
///
public int PageSize
{
get { return pageSize; }
set { pageSize = value; }
}
private bool isPaging = false;
private string _moduleName;
///
/// 模块
///
public string ModuleName
{
get { return _moduleName; }
set { _moduleName = value; }
}
///
/// 拼接查询条件
///
public IPredicate Predicate
{
get;
set;
}
///
/// 排序
///
public IList Sort
{
get;
set;
}
///
/// 是否分页
///
public bool IsPaging
{
get { return isPaging; }
set { isPaging = value; }
}
///
/// 拼接SQL字符串
///
public static string DbParmChar { get; set; }
///
/// 创建不同解析SQL语句
///
/// 数据库类型
///
public static QueryCommandBuilder Instance(DatabaseType databaseType)
{
QueryCommandBuilder qcb = null;
switch (databaseType)
{
case DatabaseType.MSSQLServer:
{
DbParmChar = "@";
qcb = new MSSqlQueryCommandBuilder();
}
break;
case DatabaseType.OleDb:
{
DbParmChar = "@";
qcb = new OleDbQueryCommandBuilder();
}
break;
case DatabaseType.MySQL:
{
DbParmChar = "@";
qcb = new MySqlQueryCommandBuilder();
}
break;
case DatabaseType.Oracle:
{
DbParmChar = ":";
qcb = new OracleQueryCommandBuilder();
}
break;
case DatabaseType.SQLite:
{
DbParmChar = "@";
qcb = new SQLiteQueryCommandBuilder();//后期再扩展
}
break;
}
return qcb;
}
///
/// 返回查询对象
///
///
public abstract QueryCommand GetQueryCommand();//映射到DataBaise文件夹中去找它对应的数据库连接方式{MSSqlQueryCommandBuilder.cs}
}
}