834 lines
26 KiB
C#
834 lines
26 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using CYQ.Data.Table;
|
|||
|
|
using System.Reflection;
|
|||
|
|
|
|||
|
|
using CYQ.Data.Tool;
|
|||
|
|
using CYQ.Data.SQL;
|
|||
|
|
using System.Data;
|
|||
|
|
using CYQ.Data.Aop;
|
|||
|
|
using CYQ.Data.UI;
|
|||
|
|
using CYQ.Data.Json;
|
|||
|
|
|
|||
|
|
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><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>ʵ<EFBFBD><CAB5>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>»<EFBFBD><C2BB><EFBFBD><EFBFBD>룩
|
|||
|
|
/// </summary>
|
|||
|
|
public abstract class SimpleOrmBase<T> : SimpleOrmBase where T : class
|
|||
|
|
{
|
|||
|
|
public new T Get(object where)
|
|||
|
|
{
|
|||
|
|
return base.Get<T>(where);
|
|||
|
|
}
|
|||
|
|
public new List<T> Select()
|
|||
|
|
{
|
|||
|
|
return base.Select<T>();
|
|||
|
|
}
|
|||
|
|
public new List<T> Select(int pageIndex, int pageSize)
|
|||
|
|
{
|
|||
|
|
return base.Select<T>(pageIndex, pageSize);
|
|||
|
|
}
|
|||
|
|
public new List<T> Select(int topN, string where)
|
|||
|
|
{
|
|||
|
|
return base.Select<T>(topN, where);
|
|||
|
|
}
|
|||
|
|
public new List<T> Select(string where)
|
|||
|
|
{
|
|||
|
|
return base.Select<T>(where);
|
|||
|
|
}
|
|||
|
|
public new List<T> Select(int pageIndex, int pageSize, string where)
|
|||
|
|
{
|
|||
|
|
return base.Select<T>(pageIndex, pageSize, where);
|
|||
|
|
}
|
|||
|
|
public new List<T> Select(int pageIndex, int pageSize, string where, out int count)
|
|||
|
|
{
|
|||
|
|
return base.Select<T>(pageIndex, pageSize, where, out count);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
internal class SimpleOrmBaseDefaultInstance : SimpleOrmBase
|
|||
|
|
{ }
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD>ORM<52><4D><EFBFBD>ࣨ<EFBFBD><E0A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>ʵ<EFBFBD><CAB5>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>»<EFBFBD><C2BB><EFBFBD><EFBFBD>룩
|
|||
|
|
/// </summary>
|
|||
|
|
public abstract class SimpleOrmBase : IDisposable
|
|||
|
|
{
|
|||
|
|
OrmBaseInfo _BaseInfo;
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ȡ - <20><><EFBFBD><EFBFBD> ORM <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Orm<72>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ԡ<EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
[JsonIgnore]
|
|||
|
|
public OrmBaseInfo BaseInfo
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
if (_BaseInfo == null)
|
|||
|
|
{
|
|||
|
|
_BaseInfo = new OrmBaseInfo(Action);
|
|||
|
|
}
|
|||
|
|
return _BaseInfo;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
internal MDataColumn Columns = null;
|
|||
|
|
private bool _IsWriteLogOnError = true;
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ʶ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>־(Ĭ<><C4AC>true)
|
|||
|
|
/// </summary>
|
|||
|
|
[JsonIgnore]
|
|||
|
|
internal bool IsWriteLogOnError
|
|||
|
|
{
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
_IsWriteLogOnError = value;
|
|||
|
|
if (_Action != null && _Action.dalHelper != null)
|
|||
|
|
{
|
|||
|
|
_Action.dalHelper.IsWriteLogOnError = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AOP<4F><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>ֵͬ<D6B5><CDAC>(Ĭ<><C4AC>false)
|
|||
|
|
/// </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;
|
|||
|
|
[JsonIgnore]
|
|||
|
|
internal MAction Action
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
//conn Ϊ null<6C><6C><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ȡֵ<C8A1><D6B5>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (_Action == null && _conn != "")
|
|||
|
|
{
|
|||
|
|
SetDelayInit(_entityInstance, _tableName, _conn);//<2F>ӳټ<D3B3><D9BC><EFBFBD>
|
|||
|
|
if (_Action != null && _Action.dalHelper != null)
|
|||
|
|
{
|
|||
|
|
_Action.dalHelper.IsWriteLogOnError = _IsWriteLogOnError;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return _Action;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Whether to allow manual insertion of ids for self-incrementing primary key identification
|
|||
|
|
///<para><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD>ģ<EFBFBD><C4A3>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>id</para>
|
|||
|
|
/// </summary>
|
|||
|
|
[JsonIgnore]
|
|||
|
|
public bool AllowInsertID
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
if (Action != null)
|
|||
|
|
{
|
|||
|
|
return Action.AllowInsertID;
|
|||
|
|
}
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
if (Action != null)
|
|||
|
|
{
|
|||
|
|
Action.AllowInsertID = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD>캯<EFBFBD><ECBAAF>
|
|||
|
|
/// </summary>
|
|||
|
|
public SimpleOrmBase()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public SimpleOrmBase SetPara(object paraName, object value)
|
|||
|
|
{
|
|||
|
|
if (Action != null)
|
|||
|
|
{
|
|||
|
|
Action.SetPara(paraName, value);
|
|||
|
|
}
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public SimpleOrmBase SetPara(object paraName, object value, DbType dbType)
|
|||
|
|
{
|
|||
|
|
if (Action != null)
|
|||
|
|
{
|
|||
|
|
Action.SetPara(paraName, value, dbType);
|
|||
|
|
}
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Sets a custom expression for the Update operation.
|
|||
|
|
/// <para>ΪUpdate<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD></para>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="updateExpression">as<61><73>"a=a+1"<para><3E>磺"a=a+1"</para></param>
|
|||
|
|
public SimpleOrmBase SetExpression(string updateExpression)
|
|||
|
|
{
|
|||
|
|
if (Action != null)
|
|||
|
|
{
|
|||
|
|
Action.SetExpression(updateExpression);
|
|||
|
|
}
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD>Aop״̬
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="op"></param>
|
|||
|
|
public SimpleOrmBase SetAopState(AopOp op)
|
|||
|
|
{
|
|||
|
|
if (Action != null)
|
|||
|
|
{
|
|||
|
|
Action.SetAopState(op);
|
|||
|
|
}
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
/// <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, null, true);
|
|||
|
|
}
|
|||
|
|
/// <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, null, true);
|
|||
|
|
}
|
|||
|
|
/// <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, true);
|
|||
|
|
}
|
|||
|
|
/// <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>
|
|||
|
|
/// <param name="isWriteLogOnError"><3E><>ִ<EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD>쳣ʱ<ECB3A3><CAB1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־</param>
|
|||
|
|
protected void SetInit(Object entityInstance, string tableName, string conn, bool isWriteLogOnError)
|
|||
|
|
{
|
|||
|
|
_entityInstance = entityInstance;
|
|||
|
|
_tableName = tableName;
|
|||
|
|
_conn = conn;
|
|||
|
|
_IsWriteLogOnError = isWriteLogOnError;
|
|||
|
|
}
|
|||
|
|
private object _entityInstance;
|
|||
|
|
private string _tableName = null;
|
|||
|
|
private string _conn = null;
|
|||
|
|
|
|||
|
|
/// <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)
|
|||
|
|
{
|
|||
|
|
if (tableName == AppConfig.Log.TableName && string.IsNullOrEmpty(AppConfig.Log.Conn))
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
//if (string.IsNullOrEmpty(conn))
|
|||
|
|
//{
|
|||
|
|
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>ʵ<EFBFBD><CAB5><EFBFBD>ࣩ
|
|||
|
|
// return;
|
|||
|
|
//}
|
|||
|
|
if (entityInstance == null) { entityInstance = this; }
|
|||
|
|
entity = entityInstance;
|
|||
|
|
typeInfo = entity.GetType();
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (string.IsNullOrEmpty(tableName) || string.IsNullOrEmpty(conn))
|
|||
|
|
{
|
|||
|
|
string tName, tConn;
|
|||
|
|
tName = DBFast.GetTableName(typeInfo, out tConn);
|
|||
|
|
if (string.IsNullOrEmpty(tableName)) { tableName = tName; }
|
|||
|
|
if (string.IsNullOrEmpty(conn)) { conn = tConn; }
|
|||
|
|
}
|
|||
|
|
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.GetColumnByType(typeInfo, conn);
|
|||
|
|
ConnBean connBean = ConnBean.Create(conn);//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⡣
|
|||
|
|
if (connBean == null)
|
|||
|
|
{
|
|||
|
|
string err = "SimpleOrmBase<T>.SetDelayInit ConnBean can't create by " + conn;
|
|||
|
|
Log.Write(err, LogType.DataBase);
|
|||
|
|
Error.Throw(err);
|
|||
|
|
}
|
|||
|
|
if (!DBTool.Exists(tableName, "U", connBean.ConnStringOrg))
|
|||
|
|
{
|
|||
|
|
lock (tableName)
|
|||
|
|
{
|
|||
|
|
if (!DBTool.Exists(tableName, "U", connBean.ConnStringOrg))
|
|||
|
|
{
|
|||
|
|
DBTool.ErrorMsg = null;
|
|||
|
|
if (!DBTool.CreateTable(tableName, Columns, connBean.ConnStringOrg))
|
|||
|
|
{
|
|||
|
|
string err = "SimpleOrmBase <20><>Create Table " + tableName + " Error:" + DBTool.ErrorMsg;
|
|||
|
|
Log.Write(err, LogType.DataBase);
|
|||
|
|
Error.Throw(err);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
_Action = new MAction(Columns.ToRow(tableName), conn);
|
|||
|
|
if (typeInfo.Name == "SysLogs")
|
|||
|
|
{
|
|||
|
|
_Action.SetAopState(Aop.AopOp.CloseAll);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (Exception err)
|
|||
|
|
{
|
|||
|
|
if (typeInfo.Name != "SysLogs")
|
|||
|
|
{
|
|||
|
|
Log.Write(err, LogType.DataBase);
|
|||
|
|
}
|
|||
|
|
Error.Throw(err.Message);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
internal void SetInit2(Object entityInstance, string tableName, string conn, bool isWriteLogOnError)
|
|||
|
|
{
|
|||
|
|
SetInit(entityInstance, tableName, conn, isWriteLogOnError);
|
|||
|
|
}
|
|||
|
|
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(false, InsertOp.ID, false);
|
|||
|
|
}
|
|||
|
|
/// <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><C7B7>Զ<EFBFBD><D4B6><EFBFBD>ȡֵ[<5B>Զ<EFBFBD><D4B6>ӿؼ<D3BF><D8BC><EFBFBD>ȡֵ,<2C><>Ҫ<EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>this.UI.SetAutoPrefix<69><78>this.UI.SetAutoParentControl<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿؼ<C3BF>ǰ]</param>
|
|||
|
|
public bool Insert(bool autoSetValue)
|
|||
|
|
{
|
|||
|
|
return Insert(autoSetValue, InsertOp.ID, false);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="autoSetValue"><3E>Ƿ<EFBFBD><C7B7>Զ<EFBFBD><D4B6><EFBFBD>ȡֵ[<5B>Զ<EFBFBD><D4B6>ӿؼ<D3BF><D8BC><EFBFBD>ȡֵ,<2C><>Ҫ<EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>this.UI.SetAutoPrefix<69><78>this.UI.SetAutoParentControl<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿؼ<C3BF>ǰ]</param>
|
|||
|
|
public bool Insert(bool autoSetValue, InsertOp option)
|
|||
|
|
{
|
|||
|
|
return Insert(autoSetValue, option, false);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="autoSetValue"><3E>Ƿ<EFBFBD><C7B7>Զ<EFBFBD><D4B6><EFBFBD>ȡֵ[<5B>Զ<EFBFBD><D4B6>ӿؼ<D3BF><D8BC><EFBFBD>ȡֵ,<2C><>Ҫ<EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>this.UI.SetAutoPrefix<69><78>this.UI.SetAutoParentControl<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿؼ<C3BF>ǰ]</param>
|
|||
|
|
/// <param name="option"><3E><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1></param>
|
|||
|
|
/// <param name="insertID"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|||
|
|
public bool Insert(bool autoSetValue, InsertOp option, bool insertID)
|
|||
|
|
{
|
|||
|
|
if (Action == null)
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
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>(<28><>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>0<><30>Ϊtrue)
|
|||
|
|
/// </summary>
|
|||
|
|
public bool Update()
|
|||
|
|
{
|
|||
|
|
return Update(null, false, null);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>0<><30>Ϊtrue)
|
|||
|
|
/// </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="updateColumns">ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>ŷָ<C5B7></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public bool Update(object where, params string[] updateColumns)
|
|||
|
|
{
|
|||
|
|
return Update(where, false, updateColumns);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>0<><30>Ϊtrue)
|
|||
|
|
/// </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>this.UI.SetAutoPrefix<69><78>this.UI.SetAutoParentControl<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿؼ<C3BF>ǰ]</param>
|
|||
|
|
public bool Update(object where, bool autoSetValue, params string[] updateColumns)
|
|||
|
|
{
|
|||
|
|
if (Action == null)
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
if (autoSetValue)
|
|||
|
|
{
|
|||
|
|
Action.UI.GetAll(false);
|
|||
|
|
}
|
|||
|
|
GetValueFromEntity();
|
|||
|
|
|
|||
|
|
if (updateColumns != null && updateColumns.Length > 0)
|
|||
|
|
{
|
|||
|
|
Action.Data.SetState(0);
|
|||
|
|
if (updateColumns.Length == 1)
|
|||
|
|
{
|
|||
|
|
updateColumns = updateColumns[0].Split(',');
|
|||
|
|
}
|
|||
|
|
foreach (string item in updateColumns)
|
|||
|
|
{
|
|||
|
|
MDataCell cell = Action.Data[item];
|
|||
|
|
if (cell != null)
|
|||
|
|
{
|
|||
|
|
cell.State = 2;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
bool result = Action.Update(where) && Action.RecordsAffected > 0;
|
|||
|
|
if (autoSetValue)
|
|||
|
|
{
|
|||
|
|
SetValueToEntity();
|
|||
|
|
}
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region ɾ<EFBFBD><EFBFBD>
|
|||
|
|
/// <summary>
|
|||
|
|
/// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>0<><30>Ϊtrue)
|
|||
|
|
/// </summary>
|
|||
|
|
public bool Delete()
|
|||
|
|
{
|
|||
|
|
return Delete(null);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>0<><30>Ϊtrue)
|
|||
|
|
/// </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)
|
|||
|
|
{
|
|||
|
|
return Delete(where, false);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>0<><30>Ϊtrue)
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="isIgnoreDeleteField"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ֶΣ<D6B6><CEA3>磺IsDeleted<65><64>ʶʱ<CAB6><CAB1>Ĭ<EFBFBD>ϻ<EFBFBD>ת<EFBFBD>ɸ<EFBFBD><C9B8>£<EFBFBD><C2A3>˱<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊɾ<CEAA><C9BE></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public bool Delete(object where, bool isIgnoreDeleteField)
|
|||
|
|
{
|
|||
|
|
if (Action == null)
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
GetValueFromEntity();
|
|||
|
|
return Action.Delete(where, isIgnoreDeleteField) && Action.RecordsAffected > 0;
|
|||
|
|
}
|
|||
|
|
#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)
|
|||
|
|
{
|
|||
|
|
if (Action == null)
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
bool result = Action.Fill(where);
|
|||
|
|
if (result)
|
|||
|
|
{
|
|||
|
|
SetValueToEntity();
|
|||
|
|
}
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ѯһ<D1AF><D2BB><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µ<EFBFBD>ʵ<EFBFBD><CAB5>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <typeparam name="T"></typeparam>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public virtual T Get<T>(object where) where T : class
|
|||
|
|
{
|
|||
|
|
if (Action != null)
|
|||
|
|
{
|
|||
|
|
bool result = Action.Fill(where);
|
|||
|
|
if (result)
|
|||
|
|
{
|
|||
|
|
return Action.Data.ToEntity<T>();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return default(T);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>б<EFBFBD><D0B1><EFBFBD>ѯ
|
|||
|
|
/// </summary>
|
|||
|
|
public virtual List<T> Select<T>() where T : class
|
|||
|
|
{
|
|||
|
|
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 virtual List<T> Select<T>(string where) where T : class
|
|||
|
|
{
|
|||
|
|
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 virtual List<T> Select<T>(int topN, string where) where T : class
|
|||
|
|
{
|
|||
|
|
int count = 0;
|
|||
|
|
return Select<T>(0, topN, where, out count);
|
|||
|
|
}
|
|||
|
|
public virtual List<T> Select<T>(int pageIndex, int pageSize) where T : class
|
|||
|
|
{
|
|||
|
|
int count = 0;
|
|||
|
|
return Select<T>(pageIndex, pageSize, null, out count);
|
|||
|
|
}
|
|||
|
|
public virtual List<T> Select<T>(int pageIndex, int pageSize, string where) where T : class
|
|||
|
|
{
|
|||
|
|
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>
|
|||
|
|
/// <param name="selectColumns">ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD></param>
|
|||
|
|
public virtual List<T> Select<T>(int pageIndex, int pageSize, string where, out int count) where T : class
|
|||
|
|
{
|
|||
|
|
if (Action == null)
|
|||
|
|
{
|
|||
|
|
count = 0;
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
return Action.SelectList<T>(pageIndex, pageSize, where, out count);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
internal MDataTable Select(int pageIndex, int pageSize, string where, out int count)
|
|||
|
|
{
|
|||
|
|
if (Action == null)
|
|||
|
|
{
|
|||
|
|
count = 0;
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
return Action.Select(pageIndex, pageSize, where, out count);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
public SimpleOrmBase SetSelectColumns(params object[] columnNames)
|
|||
|
|
{
|
|||
|
|
if (Action != null)
|
|||
|
|
{
|
|||
|
|
Action.SetSelectColumns(columnNames);
|
|||
|
|
}
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ȡ<EFBFBD><C8A1>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public int GetCount()
|
|||
|
|
{
|
|||
|
|
if (Action == null)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
return Action.GetCount();
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ȡ<EFBFBD><C8A1>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public int GetCount(object where)
|
|||
|
|
{
|
|||
|
|
if (Action == null)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
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)
|
|||
|
|
{
|
|||
|
|
if (Action == null)
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
return Action.Exists(where);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ɴ<EFBFBD>Json<6F><6E>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MDataRow<6F><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶε<D6B6><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="jsonOrEntity">json<6F>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|||
|
|
public void LoadFrom(object jsonOrEntity)
|
|||
|
|
{
|
|||
|
|
LoadFrom(jsonOrEntity, BreakOp.None);
|
|||
|
|
}
|
|||
|
|
public void LoadFrom(object jsonOrEntity, BreakOp op)
|
|||
|
|
{
|
|||
|
|
MDataRow newValueRow = MDataRow.CreateFrom(jsonOrEntity, null, op);
|
|||
|
|
if (Action != null)
|
|||
|
|
{
|
|||
|
|
Action.Data.LoadFrom(newValueRow);
|
|||
|
|
}
|
|||
|
|
List<PropertyInfo> piList = ReflectTool.GetPropertyList(typeInfo);
|
|||
|
|
foreach (PropertyInfo item in piList)
|
|||
|
|
{
|
|||
|
|
if (item.CanWrite)
|
|||
|
|
{
|
|||
|
|
MDataCell cell = newValueRow[item.Name];
|
|||
|
|
if (cell != null && !cell.IsNull)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
item.SetValue(entity, ConvertTool.ChangeType(cell.Value, item.PropertyType), null);
|
|||
|
|
}
|
|||
|
|
catch (Exception err)
|
|||
|
|
{
|
|||
|
|
Log.Write(err, LogType.Error);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
internal void SetValueToEntity()
|
|||
|
|
{
|
|||
|
|
SetValueToEntity(null, RowOp.IgnoreNull);
|
|||
|
|
}
|
|||
|
|
internal void SetValueToEntity(RowOp op)
|
|||
|
|
{
|
|||
|
|
SetValueToEntity(null, op);
|
|||
|
|
}
|
|||
|
|
internal void SetValueToEntity(string propName, RowOp op)
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(propName))
|
|||
|
|
{
|
|||
|
|
PropertyInfo pi = typeInfo.GetProperty(propName);
|
|||
|
|
if (pi != null && pi.CanWrite)
|
|||
|
|
{
|
|||
|
|
MDataCell cell = Action.Data[propName];
|
|||
|
|
if (cell != null && !cell.IsNull)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
pi.SetValue(entity, cell.Value, null);
|
|||
|
|
}
|
|||
|
|
catch
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if (Action != null)
|
|||
|
|
{
|
|||
|
|
Action.Data.SetToEntity(entity, op);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
private void GetValueFromEntity()
|
|||
|
|
{
|
|||
|
|
if (!IsUseAop || AppConfig.IsNetCore)//ASPNETCore<72>£<EFBFBD><C2A3><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Aop<6F><70><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
|
|||
|
|
{
|
|||
|
|
MDataRow d = Action.Data;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>صġ<D8B5>
|
|||
|
|
MDataRow row = MDataRow.CreateFrom(entity);//<2F><>ʵ<EFBFBD><CAB5>ԭ<EFBFBD><D4AD>ֵΪ<D6B5><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
foreach (MDataCell cell in d)
|
|||
|
|
{
|
|||
|
|
MDataCell valueCell = row[cell.ColumnName];
|
|||
|
|
if (valueCell == null || valueCell.IsNull)
|
|||
|
|
{
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
if (cell.State == 2 && cell.Struct.ValueType.IsValueType && (valueCell.StringValue == "0" || valueCell.StringValue == DateTime.MinValue.ToString()))
|
|||
|
|
{
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
cell.Value = valueCell.Value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD>(SetPara<72><61><EFBFBD>õ<EFBFBD>)<29>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public void ClearPara()
|
|||
|
|
{
|
|||
|
|
if (_Action != null)
|
|||
|
|
{
|
|||
|
|
_Action.ClearPara();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
/// </summary>
|
|||
|
|
public void Clear()
|
|||
|
|
{
|
|||
|
|
if (_Action != null)
|
|||
|
|
{
|
|||
|
|
_Action.Data.Clear();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// UI<55><49><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
[JsonIgnore]
|
|||
|
|
public MActionUI UI
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
if (Action == null) { return null; }
|
|||
|
|
if (Action.UI.IsOnAfterGetFromEventNull)
|
|||
|
|
{
|
|||
|
|
Action.UI.OnAfterGetFromEvent += new CYQ.Data.UI.MActionUI.OnAfterGetFrom(UI_OnAfterGetFromEvent);
|
|||
|
|
}
|
|||
|
|
return Action.UI;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void UI_OnAfterGetFromEvent(string propValue)
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(propValue))
|
|||
|
|
{
|
|||
|
|
SetValueToEntity(propValue, RowOp.IgnoreNull);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
#region IDisposable <EFBFBD><EFBFBD>Ա
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ͷ<EFBFBD><CDB7><EFBFBD>Դ
|
|||
|
|
/// </summary>
|
|||
|
|
public void Dispose()
|
|||
|
|
{
|
|||
|
|
if (_Action != null && !_Action.IsTransation)//ORM<52><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ֿ<EFBFBD><D6BF>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ӡ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
_Action.Dispose();
|
|||
|
|
_Action = null;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|