505 lines
15 KiB
C#
505 lines
15 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Text;
|
|||
|
|
using CYQ.Data.Table;
|
|||
|
|
using System.Reflection;
|
|||
|
|
|
|||
|
|
using CYQ.Data.Tool;
|
|||
|
|
using CYQ.Data.Cache;
|
|||
|
|
using CYQ.Data.SQL;
|
|||
|
|
using System.Data;
|
|||
|
|
using CYQ.Data.Aop;
|
|||
|
|
|
|||
|
|
|
|||
|
|
namespace CYQ.Data.Orm
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// ORM CodeFirst <20>ֶ<EFBFBD><D6B6><EFBFBD>Դ
|
|||
|
|
/// </summary>
|
|||
|
|
public enum FieldSource
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
Property,
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
Data,
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ۺ<EFBFBD><DBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
BothOfAll
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD>ORM<52><4D><EFBFBD>ࣨ<EFBFBD><E0A3A8><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public class SimpleOrmBase : IDisposable
|
|||
|
|
{
|
|||
|
|
internal MDataColumn Columns = null;
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ʶ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>־<EFBFBD><D6BE>
|
|||
|
|
/// </summary>
|
|||
|
|
internal bool AllowWriteLog
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
Action.dalHelper.isAllowInterWriteLog = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AOP<4F><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>ֵͬ<D6B5><CDAC><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
internal bool IsUseAop = false;
|
|||
|
|
private static FieldSource _FieldSource = FieldSource.BothOfAll;
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ֶ<EFBFBD><D6B6><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>ֶα<D6B6><CEB1><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD>£<EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public static FieldSource FieldSource
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
return _FieldSource;
|
|||
|
|
}
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_FieldSource = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Object entity;//ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Type typeInfo;//ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
private MAction _Action;
|
|||
|
|
internal MAction Action
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
if (_Action == null)
|
|||
|
|
{
|
|||
|
|
SetDelayInit(_entityInstance, _tableName, _conn, _op);//<2F>ӳټ<D3B3><D9BC><EFBFBD>
|
|||
|
|
}
|
|||
|
|
return _Action;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD>캯<EFBFBD><ECBAAF>
|
|||
|
|
/// </summary>
|
|||
|
|
public SimpleOrmBase()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD>Aop״̬
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="op"></param>
|
|||
|
|
public void SetAopState(AopOp op)
|
|||
|
|
{
|
|||
|
|
Action.SetAopState(op);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ʼ<EFBFBD><CABC>״̬[<5B>̳д˻<D0B4><CBBB><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>ڹ<EFBFBD><DAB9>캯<EFBFBD><ECBAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô˷<C3B4><CBB7><EFBFBD>]
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="entityInstance">ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,һ<><D2BB>д:this</param>
|
|||
|
|
protected void SetInit(Object entityInstance)
|
|||
|
|
{
|
|||
|
|
SetInit(entityInstance, null, AppConfig.DB.DefaultConn);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ʼ<EFBFBD><CABC>״̬[<5B>̳д˻<D0B4><CBBB><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>ڹ<EFBFBD><DAB9>캯<EFBFBD><ECBAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô˷<C3B4><CBB7><EFBFBD>]
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="entityInstance">ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,һ<><D2BB>д:this</param>
|
|||
|
|
/// <param name="tableName"><3E><><EFBFBD><EFBFBD>,<2C><>:Users</param>
|
|||
|
|
protected void SetInit(Object entityInstance, string tableName)
|
|||
|
|
{
|
|||
|
|
SetInit(entityInstance, tableName, AppConfig.DB.DefaultConn);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ʼ<EFBFBD><CABC>״̬[<5B>̳д˻<D0B4><CBBB><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>ڹ<EFBFBD><DAB9>캯<EFBFBD><ECBAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô˷<C3B4><CBB7><EFBFBD>]
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="entityInstance">ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,һ<><D2BB>д:this</param>
|
|||
|
|
/// <param name="tableName"><3E><><EFBFBD><EFBFBD>,<2C><>:Users</param>
|
|||
|
|
/// <param name="conn"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>ʱ<EFBFBD><CAB1>дNull,<2C><>дĬ<D0B4><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"Conn",<2C><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD></param>
|
|||
|
|
protected void SetInit(Object entityInstance, string tableName, string conn)
|
|||
|
|
{
|
|||
|
|
SetInit(entityInstance, tableName, conn, AopOp.OpenAll);
|
|||
|
|
}
|
|||
|
|
private object _entityInstance;
|
|||
|
|
private string _tableName;
|
|||
|
|
private string _conn;
|
|||
|
|
private AopOp _op;
|
|||
|
|
protected void SetInit(Object entityInstance, string tableName, string conn, AopOp op)
|
|||
|
|
{
|
|||
|
|
_entityInstance = entityInstance;
|
|||
|
|
_tableName = tableName;
|
|||
|
|
_conn = conn;
|
|||
|
|
_op = op;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ԭ<EFBFBD>еij<D0B5>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ء<EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
private void SetDelayInit(Object entityInstance, string tableName, string conn, AopOp op)
|
|||
|
|
{
|
|||
|
|
conn = string.IsNullOrEmpty(conn) ? AppConfig.DB.DefaultConn : conn;
|
|||
|
|
entity = entityInstance;
|
|||
|
|
typeInfo = entity.GetType();
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (string.IsNullOrEmpty(tableName))
|
|||
|
|
{
|
|||
|
|
tableName = typeInfo.Name;
|
|||
|
|
if (tableName.EndsWith(AppConfig.EntitySuffix))
|
|||
|
|
{
|
|||
|
|
tableName = tableName.Substring(0, tableName.Length - AppConfig.EntitySuffix.Length);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
string key = tableName + StaticTool.GetHashKey(conn);
|
|||
|
|
if (!CacheManage.LocalInstance.Contains(key))
|
|||
|
|
{
|
|||
|
|
DalType dal = DBTool.GetDalType(conn);
|
|||
|
|
bool isTxtDal = dal == DalType.Txt || dal == DalType.Xml;
|
|||
|
|
string errMsg = string.Empty;
|
|||
|
|
Columns = DBTool.GetColumns(tableName, conn, out errMsg);//<2F>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>쳣<EFBFBD><ECB3A3>
|
|||
|
|
if (Columns == null || Columns.Count == 0)
|
|||
|
|
{
|
|||
|
|
if (errMsg != string.Empty)
|
|||
|
|
{
|
|||
|
|
Error.Throw(errMsg);
|
|||
|
|
}
|
|||
|
|
Columns = TableSchema.GetColumns(typeInfo);
|
|||
|
|
if (!DBTool.ExistsTable(tableName, conn))
|
|||
|
|
{
|
|||
|
|
DBTool.ErrorMsg = null;
|
|||
|
|
if (!DBTool.CreateTable(tableName, Columns, conn))
|
|||
|
|
{
|
|||
|
|
Error.Throw("SimpleOrmBase <20><>Create Table Error:" + tableName + DBTool.ErrorMsg);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if (isTxtDal)//<2F>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ݿ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
if (FieldSource != FieldSource.Data)
|
|||
|
|
{
|
|||
|
|
MDataColumn c2 = TableSchema.GetColumns(typeInfo);
|
|||
|
|
if (FieldSource == FieldSource.BothOfAll)
|
|||
|
|
{
|
|||
|
|
Columns.AddRange(c2);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
Columns = c2;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (Columns != null && Columns.Count > 0)
|
|||
|
|
{
|
|||
|
|
CacheManage.LocalInstance.Set(key, Columns, 1440, null);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
Columns = CacheManage.LocalInstance.Get(key) as MDataColumn;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
_Action = new MAction(Columns.ToRow(tableName), conn);
|
|||
|
|
if (typeInfo.Name == "SysLogs")
|
|||
|
|
{
|
|||
|
|
_Action.SetAopState(Aop.AopOp.CloseAll);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
_Action.SetAopState(op);
|
|||
|
|
}
|
|||
|
|
_Action.EndTransation();
|
|||
|
|
}
|
|||
|
|
catch (Exception err)
|
|||
|
|
{
|
|||
|
|
if (typeInfo.Name != "SysLogs")
|
|||
|
|
{
|
|||
|
|
Log.WriteLogToTxt(err);
|
|||
|
|
}
|
|||
|
|
throw;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
internal void SetInit2(Object entityInstance, string tableName, string conn, AopOp op)
|
|||
|
|
{
|
|||
|
|
SetInit(entityInstance, tableName, conn, op);
|
|||
|
|
}
|
|||
|
|
internal void SetInit2(Object entityInstance, string tableName, string conn)
|
|||
|
|
{
|
|||
|
|
SetInit(entityInstance, tableName, conn);
|
|||
|
|
}
|
|||
|
|
internal void Set(object key, object value)
|
|||
|
|
{
|
|||
|
|
if (Action != null)
|
|||
|
|
{
|
|||
|
|
Action.Set(key, value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD>IJ<EFBFBD> <EFBFBD><EFBFBD>Ա
|
|||
|
|
|
|||
|
|
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public bool Insert()
|
|||
|
|
{
|
|||
|
|
return Insert(InsertOp.ID);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="option"><3E><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1></param>
|
|||
|
|
public bool Insert(InsertOp option)
|
|||
|
|
{
|
|||
|
|
return Insert(false, option, false);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="insertID"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|||
|
|
public bool Insert(InsertOp option, bool insertID)
|
|||
|
|
{
|
|||
|
|
return Insert(false, option, insertID);
|
|||
|
|
}
|
|||
|
|
/*
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="autoSetValue"><3E>Զ<EFBFBD><D4B6>ӿ<EFBFBD><D3BF>ƻ<EFBFBD>ȡֵ</param>
|
|||
|
|
internal bool Insert(bool autoSetValue)
|
|||
|
|
{
|
|||
|
|
return Insert(autoSetValue, InsertOp.ID);
|
|||
|
|
}
|
|||
|
|
internal bool Insert(bool autoSetValue, InsertOp option)
|
|||
|
|
{
|
|||
|
|
return Insert(autoSetValue, InsertOp.ID, false);
|
|||
|
|
}*/
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="autoSetValue"><3E>Զ<EFBFBD><D4B6>ӿ<EFBFBD><D3BF>ƻ<EFBFBD>ȡֵ</param>
|
|||
|
|
/// <param name="option"><3E><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1></param>
|
|||
|
|
/// <param name="insertID"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|||
|
|
internal bool Insert(bool autoSetValue, InsertOp option, bool insertID)
|
|||
|
|
{
|
|||
|
|
if (autoSetValue)
|
|||
|
|
{
|
|||
|
|
Action.UI.GetAll(!insertID);
|
|||
|
|
}
|
|||
|
|
GetValueFromEntity();
|
|||
|
|
Action.AllowInsertID = insertID;
|
|||
|
|
bool result = Action.Insert(false, option);
|
|||
|
|
if (autoSetValue || option != InsertOp.None)
|
|||
|
|
{
|
|||
|
|
SetValueToEntity();
|
|||
|
|
}
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public bool Update()
|
|||
|
|
{
|
|||
|
|
return Update(null, false);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="where">where<72><65><EFBFBD><EFBFBD>,<2C><>ֱ<EFBFBD>Ӵ<EFBFBD>id<69><64>ֵ<EFBFBD><D6B5>:[88],<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>where<72><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:[id=88 and name='·<><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>']</param>
|
|||
|
|
public bool Update(object where)
|
|||
|
|
{
|
|||
|
|
return Update(where, false);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="where">where<72><65><EFBFBD><EFBFBD>,<2C><>ֱ<EFBFBD>Ӵ<EFBFBD>id<69><64>ֵ<EFBFBD><D6B5>:[88],<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>where<72><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:[id=88 and name='·<><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>']</param>
|
|||
|
|
/// <param name="autoSetValue"><3E>Ƿ<EFBFBD><C7B7>Զ<EFBFBD><D4B6><EFBFBD>ȡֵ[<5B>Զ<EFBFBD><D4B6>ӿؼ<D3BF><D8BC><EFBFBD>ȡֵ,<2C><>Ҫ<EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>SetAutoPrefix<69><78>SetAutoParentControl<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿؼ<C3BF>ǰ]</param>
|
|||
|
|
internal bool Update(object where, bool autoSetValue)
|
|||
|
|
{
|
|||
|
|
if (autoSetValue)
|
|||
|
|
{
|
|||
|
|
Action.UI.GetAll(false);
|
|||
|
|
}
|
|||
|
|
GetValueFromEntity();
|
|||
|
|
bool result = Action.Update(where);
|
|||
|
|
if (autoSetValue)
|
|||
|
|
{
|
|||
|
|
SetValueToEntity();
|
|||
|
|
}
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region ɾ<EFBFBD><EFBFBD>
|
|||
|
|
/// <summary>
|
|||
|
|
/// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public bool Delete()
|
|||
|
|
{
|
|||
|
|
return Delete(null);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="where">where<72><65><EFBFBD><EFBFBD>,<2C><>ֱ<EFBFBD>Ӵ<EFBFBD>id<69><64>ֵ<EFBFBD><D6B5>:[88],<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>where<72><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:[id=88 and name='·<><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>']</param>
|
|||
|
|
public bool Delete(object where)
|
|||
|
|
{
|
|||
|
|
GetValueFromEntity();
|
|||
|
|
return Action.Delete(where);
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region <EFBFBD><EFBFBD>ѯ
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ѯ1<D1AF><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public bool Fill()
|
|||
|
|
{
|
|||
|
|
return Fill(null);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ѯ1<D1AF><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public bool Fill(object where)
|
|||
|
|
{
|
|||
|
|
bool result = Action.Fill(where);
|
|||
|
|
if (result)
|
|||
|
|
{
|
|||
|
|
SetValueToEntity();
|
|||
|
|
}
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>б<EFBFBD><D0B1><EFBFBD>ѯ
|
|||
|
|
/// </summary>
|
|||
|
|
public List<T> Select<T>()
|
|||
|
|
{
|
|||
|
|
int count = 0;
|
|||
|
|
return Select<T>(0, 0, null, out count);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>б<EFBFBD><D0B1><EFBFBD>ѯ
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="where"><3E><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>[<5B>ɸ<EFBFBD><C9B8><EFBFBD> order by <20><><EFBFBD><EFBFBD>]</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public List<T> Select<T>(string where)
|
|||
|
|
{
|
|||
|
|
int count = 0;
|
|||
|
|
return Select<T>(0, 0, where, out count);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>б<EFBFBD><D0B1><EFBFBD>ѯ
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="topN"><3E><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD></param>
|
|||
|
|
/// <param name="where"><3E><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>[<5B>ɸ<EFBFBD><C9B8><EFBFBD> order by <20><><EFBFBD><EFBFBD>]</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public List<T> Select<T>(int topN, string where)
|
|||
|
|
{
|
|||
|
|
int count = 0;
|
|||
|
|
return Select<T>(0, topN, where, out count);
|
|||
|
|
}
|
|||
|
|
public List<T> Select<T>(int pageIndex, int pageSize)
|
|||
|
|
{
|
|||
|
|
int count = 0;
|
|||
|
|
return Select<T>(pageIndex, pageSize, null, out count);
|
|||
|
|
}
|
|||
|
|
public List<T> Select<T>(int pageIndex, int pageSize, string where)
|
|||
|
|
{
|
|||
|
|
int count = 0;
|
|||
|
|
return Select<T>(pageIndex, pageSize, where, out count);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD>ܵ<EFBFBD>ѡ<EFBFBD><D1A1>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ,ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱֻ<CAB1><D6BB><EFBFBD><EFBFBD>PageIndex/PageSize<7A><65><EFBFBD><EFBFBD>Ϊ0]
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="pageIndex"><3E>ڼ<EFBFBD>ҳ</param>
|
|||
|
|
/// <param name="pageSize">ÿҳ<C3BF><D2B3><EFBFBD><EFBFBD>[Ϊ0ʱĬ<CAB1><C4AC>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]</param>
|
|||
|
|
/// <param name="where"> <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>[<5B>ɸ<EFBFBD><C9B8><EFBFBD> order by <20><><EFBFBD><EFBFBD>]</param>
|
|||
|
|
/// <param name="count"><3E><><EFBFBD>صļ<D8B5>¼<EFBFBD><C2BC><EFBFBD><EFBFBD></param>
|
|||
|
|
public List<T> Select<T>(int pageIndex, int pageSize, string where, out int count)
|
|||
|
|
{
|
|||
|
|
return Action.Select(pageIndex, pageSize, where, out count).ToList<T>();
|
|||
|
|
}
|
|||
|
|
internal MDataTable Select(int pageIndex, int pageSize, string where, out int count)
|
|||
|
|
{
|
|||
|
|
return Action.Select(pageIndex, pageSize, where, out count);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ȡ<EFBFBD><C8A1>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public int GetCount(object where)
|
|||
|
|
{
|
|||
|
|
return Action.GetCount(where);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ѯ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public bool Exists(object where)
|
|||
|
|
{
|
|||
|
|
return Action.Exists(where);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
internal void SetValueToEntity()
|
|||
|
|
{
|
|||
|
|
SetValueToEntity(null);
|
|||
|
|
}
|
|||
|
|
internal void SetValueToEntity(string propName)
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(propName))
|
|||
|
|
{
|
|||
|
|
PropertyInfo pi = typeInfo.GetProperty(propName);
|
|||
|
|
if (pi != null)
|
|||
|
|
{
|
|||
|
|
MDataCell cell = Action.Data[propName];
|
|||
|
|
if (cell != null && !cell.IsNull)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
pi.SetValue(entity, cell.Value, null);
|
|||
|
|
}
|
|||
|
|
catch
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
Action.Data.SetToEntity(entity);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
private void GetValueFromEntity()
|
|||
|
|
{
|
|||
|
|
if (!IsUseAop || AppConfig.IsAspNetCore)//ASPNETCore<72>£<EFBFBD><C2A3><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Aop<6F><70><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
|
|||
|
|
{
|
|||
|
|
Action.Data.LoadFrom(entity, BreakOp.Null);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#region IDisposable <EFBFBD><EFBFBD>Ա
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ͷ<EFBFBD><CDB7><EFBFBD>Դ
|
|||
|
|
/// </summary>
|
|||
|
|
public void Dispose()
|
|||
|
|
{
|
|||
|
|
if (Action != null)
|
|||
|
|
{
|
|||
|
|
Action.Dispose();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
}
|
|||
|
|
}
|