/// <summary> /// 查询统计信息 /// </summary> /// <param name="SqlWhere">条件语句,如:IsDel=0 AND Status=@Status AND Id>@MinId</param> /// <param name="UseReadonlySource">是否实用只读数据源,true-是,false-否</param> /// <param name="SqlParams">参数集合,如:{Status,MinId}</param> /// <returns></returns> public static long Count(string SqlWhere, bool UseReadonlySource = true, params object[] SqlParams) { string SqlText = SqlGenerator.SQLBUILDER_Count(DB.ORM_TabInfo, SqlWhere); Data.DBHelper db = new Data.DBHelper(DB.ORM_TabInfo.ORMConnectionMark, UseReadonlySource); object CountObj = db.ExecTextScalar(SqlText, SqlParams); if (CountObj != null && CountObj != DBNull.Value) { long CountVal = Convert.ToInt64(CountObj); return(CountVal); } else { return(-1); } }
/// <summary> /// 查询统计信息 /// </summary> /// <param name="ExpWhere">lamda表达式</param> /// <param name="UseReadonlySource">是否实用只读数据源,true-是,false-否</param> /// <returns></returns> public static long Count(Expression <Func <T, bool> > ExpWhere, bool UseReadonlySource = true) { ResolveExpress re = new Tool.ResolveExpress(); re.ResolveExpression(re, ExpWhere); string SqlWhere = "1=1" + re.SqlWhere; string SqlText = SqlGenerator.SQLBUILDER_Count(DB.ORM_TabInfo, SqlWhere); object[] SqlParams = re.SqlParams.ToArray(); Data.DBHelper db = new Data.DBHelper(DB.ORM_TabInfo.ORMConnectionMark, UseReadonlySource); object CountObj = db.ExecTextScalar(SqlText, SqlParams); if (CountObj != null && CountObj != DBNull.Value) { long CountVal = Convert.ToInt64(CountObj); return(CountVal); } else { return(-1); } }
/// <summary> /// 保存数据记录 /// </summary> /// <param name="Model">实体</param> /// <param name="NewId">如存在自增列,则为新自增列Id</param> /// <returns></returns> public static bool Add(T Model, out long NewId) { NewId = -1; string SqlText = SqlGenerator.SQLBUILDER_Add(DB.ORM_TabInfo); List <object> SqlParams = new List <object>(); foreach (string PropName in DB.ORM_TabInfo.ORMColList) { if (DB.ORM_TabInfo.ORM_NoAddCols.Contains(PropName) || DB.ORM_TabInfo.ORM_AutoIncreaseColName == PropName) { continue; } PropertyInfo Prop = DB.ORM_TabInfo.ORM_TypePropDic[PropName]; object PropValue = Prop.GetValue(Model); if (Prop.PropertyType == typeof(DateTime)) { DateTime DT = Convert.ToDateTime(PropValue); if (DT.Year < 1900) { SqlParams.Add(new DateTime(1900, 1, 1)); } else { SqlParams.Add(PropValue); } } else { SqlParams.Add(PropValue); } } Data.DBHelper db = new Data.DBHelper(DB.ORM_TabInfo.ORMConnectionMark, false); object NewIdObj = null; try { NewIdObj = db.ExecTextScalar(SqlText, SqlParams.ToArray()); if (NewIdObj != null && NewIdObj != DBNull.Value) { long.TryParse(NewIdObj.ToString(), out NewId); if (!string.IsNullOrEmpty(DB.ORM_TabInfo.ORM_AutoIncreaseColName) && DB.ORM_TabInfo.ORM_TypePropDic.ContainsKey(DB.ORM_TabInfo.ORM_AutoIncreaseColName)) { PropertyInfo AutoIncreaseProp = DB.ORM_TabInfo.ORM_TypePropDic[DB.ORM_TabInfo.ORM_AutoIncreaseColName]; if (AutoIncreaseProp.PropertyType == typeof(int)) { DB.ORM_TabInfo.ORM_TypePropDic[DB.ORM_TabInfo.ORM_AutoIncreaseColName].SetValue(Model, Convert.ToInt32(NewId)); } else if (AutoIncreaseProp.PropertyType == typeof(short)) { DB.ORM_TabInfo.ORM_TypePropDic[DB.ORM_TabInfo.ORM_AutoIncreaseColName].SetValue(Model, Convert.ToInt16(NewId)); } else { DB.ORM_TabInfo.ORM_TypePropDic[DB.ORM_TabInfo.ORM_AutoIncreaseColName].SetValue(Model, NewId); } } } return(true); } catch (Exception E) { Console.WriteLine(E.Message); return(false); } }