📄 dialectfactory.cs
字号:
using System;
using System.Collections;
using System.Text;
using System.Data.Common;
using System.Data;
using System.Reflection;
using iSun.Entitys;
using iSun.DbDAL;
namespace iSun.SPL.Factory
{
/// <summary>
/// Sql 方言生成工厂
/// </summary>
public abstract class DialectFactory
{
public DialectFactory(object entitys)
{
this.Entitys = entitys;
}
/// <summary>
/// 生成一条插入语句
/// </summary>
/// <returns></returns>
public abstract string BuildInsertCom();
/// <summary>
/// 生成一条更新语句
/// </summary>
/// <param name="isPK">是否通过主键更新,否则通过条件集合更新</param>
/// <returns></returns>
public abstract string BuildUpdateCom();
/// <summary>
/// 生成一条删除语句
/// </summary>
/// <param name="isPK">是否通过主键删除,否则通过条件集合删除</param>
/// <returns></returns>
public abstract string BuildDeleteCom();
/// <summary>
/// 按照条件删除数据
/// </summary>
/// <param name="condition"></param>
/// <returns></returns>
public abstract string BuildDeleteCom(string condition);
// /// <summary>
// /// 获取一条查询语句
// /// </summary>
// /// <returns></returns>
// public abstract string GetSelectCom();
/// <summary>
/// 生成数据表字段列表
/// </summary>
/// <returns>字段列表</returns>
public string BuildFieldList()
{
System.Text.StringBuilder _InsStrFields = new StringBuilder();
Hashtable ht = ReaderAutoMapper();
if (ht==null)
{
//log
return null;
}
int i = 0;
IDictionaryEnumerator myEnumerator = ht.GetEnumerator();
try
{
while ( myEnumerator.MoveNext() )
{
if (i==0)
{
_InsStrFields.Append("["+myEnumerator.Key.ToString()+"]");
}
else
{
_InsStrFields.Append(",[" + myEnumerator.Key.ToString()+"]");
}
i ++;
}
return _InsStrFields.ToString() ;
}
catch(System.Exception e)
{
// log to log
throw e;
}
}
/// <summary>
/// 生成无条件的查询命令
/// </summary>
/// <returns>命令字符串</returns>
public string SelectAllCommand()
{
StringBuilder _SelStr = new StringBuilder("");
_SelStr.Append("Select ");
_SelStr.Append(this.BuildFieldList());
_SelStr.Append(" From [");
_SelStr.Append(this.GetTableName()+"]");
return _SelStr.ToString();
}
/// <summary>
/// 生成有条件的查询命令
/// </summary>
/// <param name="list">条件</param>
/// <returns>命令字符串</returns>
public abstract string SelectCommand(IList list);
/// <summary>
/// 通过ID生成有条件的查询命令
/// </summary>
/// <param name="id">id</param>
/// <returns>命令字符串</returns>
public abstract string SelectCommand(string id);
/// <summary>
/// 数据插入
/// </summary>
/// <returns></returns>
public bool Save()
{
int i = 0;
try
{
i = new iSun.DbDAL.DbSql().ExecuteSql(BuildInsertCom());
if (i<=0)
{
return false;
}
else
{
return true;
}
}
catch(System.Exception e)
{
throw e;
}
}
/// <summary>
/// 数据更新
/// </summary>
/// <returns></returns>
public bool Update()
{
int i = 0;
try
{
i = new iSun.DbDAL.DbSql().ExecuteSql(BuildUpdateCom());
if (i<=0)
{
return false;
}
else
{
return true;
}
}
catch(System.Exception e)
{
// log e.message
throw e;
}
}
/// <summary>
/// 数据删除
/// </summary>
/// <returns></returns>
public bool Delete()
{
int i = 0;
try
{
i = new iSun.DbDAL.DbSql().ExecuteSql(BuildDeleteCom());
if (i<=0)
{
return false;
}
else
{
return true;
}
}
catch(System.Exception e)
{
throw e;
}
}
/// <summary>
/// 获取相关信息
/// </summary>
/// <returns></returns>
public Hashtable ReaderAutoMapper()
{
return iSun.Common.ReflectionUntil.ReaderAutoMapper(this.Entitys);
}
/// <summary>
/// 获得表名
/// </summary>
/// <returns>表名</returns>
public string GetTableName()
{
Type t = this.Entitys.GetType();
foreach (Attribute attr in t.GetCustomAttributes(true))
{
iSun.Entitys.TableAttribute tableattribute = attr as TableAttribute;
if (null != tableattribute)
{
return tableattribute.TableName;
}
}
return "";
}
/// <summary>
/// 获取唯一标识符
/// </summary>
/// <returns></returns>
public string GetGuid()
{
Type t = this.Entitys.GetType();
foreach (Attribute attr in t.GetCustomAttributes(true))
{
iSun.Entitys.TableAttribute tableattribute = attr as TableAttribute;
if (null != tableattribute)
{
return tableattribute.Guid;
}
}
return "";
}
/// <summary>
/// 获取属性的值
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public object GetPropertyValue(string name)
{
try
{
return iSun.Common.ReflectionUntil.GetPropertyValue(this.Entitys,name);
}
catch(System.Exception e)
{
throw e;
}
}
/// <summary>
/// 设置属性的值
/// </summary>
/// <param name="name"></param>
/// <param name="values"></param>
public void SetPropertyValue(string name,object values)
{
try
{
iSun.Common.ReflectionUntil.SetPropertyValue(this.Entitys,name,values);
}
catch(System.Exception e)
{
throw e;
}
}
public object Entitys;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -