public int Delete(string[] defKeys) { StringBuilder strBuilder = new StringBuilder(); foreach (string defKey in defKeys) { WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder(); whereBuilder.AppendItem("DEF_KEY", defKey); whereBuilder.AppendTenantCode(typeof(WfMatrixDefinition)); strBuilder.Append(DELETE_SQL_CLAUSE); strBuilder.Append(whereBuilder.ToSqlString(TSqlBuilder.Instance)); strBuilder.Append(TSqlBuilder.Instance.DBStatementSeperator); whereBuilder.Clear(); whereBuilder.AppendItem("MATRIX_DEF_KEY", defKey); whereBuilder.AppendTenantCode(typeof(WfMatrixDimensionDefinition)); strBuilder.Append(DELETE_DIMENSION_SQL_CLAUSE); strBuilder.Append(whereBuilder.ToSqlString(TSqlBuilder.Instance)); strBuilder.Append(TSqlBuilder.Instance.DBStatementSeperator); } return(DbHelper.RunSqlWithTransaction(strBuilder.ToString())); }
/// <summary> /// 根据ResourceID和ClassName加载相关的数据 /// </summary> /// <typeparam name="TRelative"></typeparam> /// <typeparam name="TRelativeCollection"></typeparam> /// <param name="resourceID"></param> /// <param name="className"></param> /// <returns></returns> public TRelativeCollection LoadRelativeData <TRelative, TRelativeCollection>( string resourceID, string className) where TRelative : GenericFormRelativeData, new() where TRelativeCollection : EditableDataObjectCollectionBase <TRelative>, new() { resourceID.CheckStringIsNullOrEmpty("resourceID"); className.CheckStringIsNullOrEmpty("className"); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("RESOURCE_ID", resourceID).AppendItem("CLASS", className); builder.AppendTenantCode(typeof(TRelative)); string sql = string.Format("SELECT * FROM WF.GENERIC_FORM_RELATIVE_DATA WHERE {0} ORDER BY SORT_ID", builder.ToSqlString(TSqlBuilder.Instance)); DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; TRelativeCollection result = new TRelativeCollection(); ORMapping.DataViewToCollection(result, table.DefaultView); foreach (TRelative item in result) { XmlDocument xmlDoc = XmlHelper.CreateDomDocument(item.XmlContent); XmlHelper.DeserializeToObject(xmlDoc, item); } return(result); }
/// <summary> /// 获取可用的排序号 /// </summary> /// <param name="userID">用户ID</param> /// <returns></returns> public int GetMaxSort(string userID) { ExceptionHelper.TrueThrow <ArgumentNullException>(null == userID, "userID"); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("USER_ID", DeluxeIdentity.CurrentUser.ID); builder.AppendTenantCode(typeof(TaskCategory)); int result = 0; string strSQL = string.Format("SELECT MAX(INNER_SORT_ID) AS NUM FROM WF.USER_TASK_CATEGORY WHERE {0}", builder.ToSqlString(TSqlBuilder.Instance)); object num = DbHelper.RunSqlReturnScalar(strSQL, ConnectionDefine.DBConnectionName); if (num.ToString() != string.Empty) { result = (int)num; //当排序号以达到最大值999时,仍返回最大值 if (result < 999) { result++; } } return(result); }
private static StringBuilder BuildSqlClause(WfMatrixQueryParamCollection queryParams) { var matrixIdParam = queryParams.Find(p => p.QueryName == DB_FIELD_MATRIX_ID); string inSqlClause = string.Empty; foreach (var para in queryParams) { if (para == matrixIdParam) { continue; //|| string.IsNullOrEmpty(para.QueryValue) 空值也作为条件 } inSqlClause = BuilderSubSqlClause(para, matrixIdParam.QueryValue, inSqlClause); } StringBuilder result = new StringBuilder(SELECT_SQL_CLAUSE); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("R." + matrixIdParam.QueryName, matrixIdParam.QueryValue); builder.AppendTenantCode("R.TENANT_CODE"); result.Append(builder.ToSqlString(TSqlBuilder.Instance)); if (!string.IsNullOrEmpty(inSqlClause)) { result.AppendFormat(" AND R.{0} IN ({1})", DB_FIELD_MATRIX_ROW_ID, inSqlClause); } return(result); }
/// <summary> /// 按照条件加载对象 /// </summary> /// <param name="loadingCondition">筛选和排序条件</param> /// <param name="mappings"></param> /// <returns>对象集合</returns> public TCollection Load(WhereLoadingCondition loadingCondition, ORMappingItemCollection mappings = null) { loadingCondition.NullCheck("loadingCondition"); if (mappings == null) { mappings = this.GetQueryMappingInfo(); } TCollection result = default(TCollection); PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration(string.Format("Load({0})", this.GetType().FullName), () => { loadingCondition.BuilderAction.NullCheck("whereAction"); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); loadingCondition.BuilderAction(builder); builder.AppendTenantCode(typeof(T)); OrderBySqlClauseBuilder orderByBuilder = null; if (loadingCondition.OrderByAction != null) { orderByBuilder = new OrderBySqlClauseBuilder(); loadingCondition.OrderByAction(orderByBuilder); } result = this.InnerLoadByBuilder(builder.ToSqlString(TSqlBuilder.Instance), orderByBuilder, mappings); }); return(result); }
private void ExecQuery() { //重新收集所需要的查询内容 bindingControl.CollectData(); QueryCondition.ApplicationName = FormCategory.SelectedValue; QueryCondition.ApplicationName = (QueryCondition.ApplicationName == "" || QueryCondition.ApplicationName == "全部") ? "" : QueryCondition.ApplicationName; QueryCondition.ProgramName = ProgramName.SelectedValue; QueryCondition.ProgramName = (QueryCondition.ProgramName == "" || QueryCondition.ProgramName == "全部") ? "" : QueryCondition.ProgramName; //对某些查询内容进行格式处理 WhereSqlClauseBuilder builder = ConditionMapping.GetWhereSqlClauseBuilder(QueryCondition, new AdjustConditionValueDelegate(AdjustQueryConditionValue)); builder.AppendTenantCode(); //对数据源中的where进行赋值操作,自动完成查询操作 whereCondition.Value = builder.ToSqlString(TSqlBuilder.Instance); if (whereCondition.Value != "") { whereCondition.Value += " AND"; } whereCondition.Value += " RESOURCE_ID IS NOT NULL"; LastQueryRowCount = -1; }
public EmailMessageCollection LoadCandidateMessages(int batchCount) { string topDesp = batchCount >= 0 ? string.Format(" TOP {0} ", batchCount) : string.Empty; WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("1", 1); builder.AppendTenantCode(); string sql = string.Format("SELECT {0}* FROM MSG.EMAIL_MESSAGES WITH (UPDLOCK, READPAST) WHERE {1} ORDER BY SORT_ID", topDesp, builder.ToSqlString(TSqlBuilder.Instance)); EmailMessageCollection result = new EmailMessageCollection(); DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; foreach (DataRow row in table.Rows) { EmailMessage message = new EmailMessage(); DataRowToEmailMessage(row, message); result.Add(message); } return(result); }
/// <summary> /// 获得指定ID的Material /// </summary> /// <param name="materialID">指定ID</param> /// <returns>MaterialList</returns> public MaterialList LoadMaterialByMaterialID(string materialID) { ExceptionHelper.CheckStringIsNullOrEmpty(materialID, "materialID"); MaterialList materials = new MaterialList(); WhereSqlClauseBuilder wBuilder = new WhereSqlClauseBuilder(); wBuilder.AppendItem("ID", materialID); wBuilder.AppendTenantCode(typeof(Material)); string sql = "SELECT * FROM WF.MATERIAL WHERE " + wBuilder.ToSqlString(TSqlBuilder.Instance); using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName())) { using (IDataReader dr = DbHelper.RunSqlReturnDR(sql, GetConnectionName())) { while (dr.Read()) { Material material = new Material(); ORMapping.DataReaderToObject(dr, material); materials.Add(material); } } } DecorateMaterials(materials); return(materials); }
public void UpdateProcessStatus(IEnumerable <IWfProcess> processes) { processes.NullCheck("processes"); StringBuilder strB = new StringBuilder(); foreach (IWfProcess process in processes) { if (process.SearchID.IsNotEmpty()) { if (strB.Length > 0) { strB.Append(TSqlBuilder.Instance.DBStatementSeperator); } WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("RESOURCE_ID", process.SearchID); builder.AppendTenantCode(typeof(AppCommonInfo)); strB.AppendFormat("UPDATE WF.APPLICATIONS_COMMON_INFO SET COMPLETED_FLAG = {0} WHERE {1}", (int)AppCommonInfo.ConvertProcessStatusToCompletedFlag(process.Status), builder.ToSqlString(TSqlBuilder.Instance)); } } if (strB.Length > 0) { DbHelper.RunSqlWithTransaction(strB.ToString(), this.GetConnectionName()); } }
/// <summary> /// /// </summary> /// <param name="ids"></param> /// <returns>无法删除的ID列表</returns> public string[] Delete(string[] ids) { StringBuilder strBuilder = new StringBuilder(); List <string> result = new List <string>(); foreach (string id in ids) { if (CheckScheduleInJob(id)) { result.Add(id); continue; } WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder(); whereBuilder.AppendItem("SCHEDULE_ID", id); whereBuilder.AppendTenantCode(typeof(JobSchedule)); strBuilder.Append(DELETE_JOB_SCHEDULE_DEF_SQL_CLAUSE); strBuilder.Append(whereBuilder.ToSqlString(TSqlBuilder.Instance)); strBuilder.Append(TSqlBuilder.Instance.DBStatementSeperator); } if (!string.IsNullOrEmpty(strBuilder.ToString())) { using (TransactionScope tran = TransactionScopeFactory.Create()) { DbHelper.RunSqlWithTransaction(strBuilder.ToString(), GetConnectionName()); tran.Complete(); } } return(result.ToArray()); }
/// <summary> /// 按照ResourceID来更新数据 /// </summary> /// <param name="resourceID"></param> /// <param name="assignees"></param> public virtual void Update(string resourceID, TTaskAssigneeCollection assignees) { resourceID.CheckStringIsNullOrEmpty("resourceID"); assignees.NullCheck("assignees"); StringBuilder strB = new StringBuilder(); ORMappingItemCollection mappings = GetMappingInfo(new Dictionary <string, object>()); WhereSqlClauseBuilder wBuilder = new WhereSqlClauseBuilder(); wBuilder.AppendItem("RESOURCE_ID", resourceID); wBuilder.AppendTenantCode(); strB.AppendFormat("DELETE {0} WHERE {1}", mappings.TableName, wBuilder.ToSqlString(TSqlBuilder.Instance)); foreach (TTaskAssignee assignee in assignees) { strB.Append(TSqlBuilder.Instance.DBStatementSeperator); InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(assignee, mappings); strB.AppendFormat("INSERT INTO {0}{1}", mappings.TableName, builder.ToSqlString(TSqlBuilder.Instance)); } DbHelper.RunSqlWithTransaction(strB.ToString(), GetConnectionName()); }
/// <summary> /// /// </summary> /// <param name="whereAction"></param> /// <param name="timePoint">时间点</param> /// <param name="mappings"></param> /// <returns></returns> public bool Exists(Action <WhereSqlClauseBuilder> whereAction, DateTime timePoint, ORMappingItemCollection mappings = null) { whereAction.NullCheck("whereAction"); if (mappings == null) { mappings = this.GetQueryMappingInfo(); } WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); whereAction(builder); builder.AppendTenantCode(typeof(T)); ConnectiveSqlClauseCollection timePointBuilder = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder(timePoint); timePointBuilder.Add(builder); string sql = string.Format("SELECT TOP 1 * FROM {0}", GetQueryTableName(mappings, timePoint)); if (builder.Count > 0) { sql = sql + string.Format(" WHERE {0}", timePointBuilder.ToSqlString(TSqlBuilder.Instance)); } return((int)DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0].Rows.Count > 0); }
public WfClientProcessCurrentInfoPageQueryResult QueryProcesses(WfClientProcessQueryCondition condition, int startRowIndex, int maximumRows, string orderBy, int totalCount) { condition.NullCheck("condition"); OperationContext.Current.FillContextToOguServiceContext(); WfProcessQueryCondition serverCondition = null; WfClientProcessQueryConditionConverter.Instance.ClientToServer(condition, ref serverCondition); if (orderBy.IsNullOrEmpty()) { orderBy = "START_TIME DESC"; } ConnectiveSqlClauseCollection connective = serverCondition.ToSqlBuilder(); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("COMMITTED", "1"); builder.AppendTenantCode(); connective.Add(builder); QueryCondition qc = new QueryCondition(startRowIndex, maximumRows, ORMapping.GetSelectFieldsNameSql <WfProcessCurrentInfo>(), ORMapping.GetMappingInfo(typeof(WfProcessCurrentInfo)).TableName, orderBy); qc.WhereClause += connective.ToSqlString(TSqlBuilder.Instance); return(QueryProcessInfo(qc, totalCount)); }
/// <summary> /// 按照条件加载对象 /// </summary> /// <param name="whereAction">筛选条件</param> /// <param name="orderByAction">排序条件</param> /// <param name="mappings"></param> /// <returns>对象集合</returns> public TCollection Load(Action <WhereSqlClauseBuilder> whereAction, Action <OrderBySqlClauseBuilder> orderByAction, ORMappingItemCollection mappings) { TCollection result = null; PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration(string.Format("Load({0})", this.GetType().FullName), () => { whereAction.NullCheck("whereAction"); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); whereAction(builder); builder.AppendTenantCode(typeof(T)); OrderBySqlClauseBuilder orderByBuilder = null; if (orderByAction != null) { orderByBuilder = new OrderBySqlClauseBuilder(); orderByAction(orderByBuilder); } result = InnerLoadByBuilder(builder.ToSqlString(TSqlBuilder.Instance), orderByBuilder, mappings); }); return(result); }
public MaterialList LoadVersionMaterialsBySceneKey(string resourceID, string wfActivityName) { MaterialList copyVersionMaterials = new MaterialList(); WhereSqlClauseBuilder whereSqlClause = new WhereSqlClauseBuilder(); whereSqlClause.AppendItem("RESOURCE_ID", resourceID); whereSqlClause.AppendItem("VERSION_TYPE", Convert.ToInt16(MaterialVersionType.CopyVersion).ToString()); whereSqlClause.AppendItem("WF_ACTIVITY_NAME", wfActivityName); whereSqlClause.AppendTenantCode(typeof(Material)); string sql = string.Format("SELECT * FROM WF.MATERIAL WHERE {0}", whereSqlClause.ToSqlString(TSqlBuilder.Instance)); using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName())) { using (IDataReader dr = DbHelper.RunSqlReturnDR(sql, GetConnectionName())) { while (dr.Read()) { Material material = new Material(); ORMapping.DataReaderToObject(dr, material); copyVersionMaterials.Add(material); } } } DecorateMaterials(copyVersionMaterials); return(copyVersionMaterials); }
public WfProcessDescriptorInfoCollection LoadWfProcessDescriptionInfos(Action <WhereSqlClauseBuilder> action, bool ignoreProcessData) { action.NullCheck("action"); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendTenantCode(); action(builder); string sqlFieldStr = ignoreProcessData ? ORMapping.GetSelectFieldsNameSql <WfProcessDescriptorInfo>("DATA") : "*"; string sql = string.Format("SELECT {0} FROM WF.PROCESS_DESCRIPTORS WHERE {1}", sqlFieldStr, builder.ToSqlString(TSqlBuilder.Instance)); WfProcessDescriptorInfoCollection result = new WfProcessDescriptorInfoCollection(); DataTable table = DbHelper.RunSqlReturnDS(sql, this.GetConnectionName()).Tables[0]; foreach (DataRow row in table.Rows) { WfProcessDescriptorInfo wfProcessDescInfo = new WfProcessDescriptorInfo(); ORMapping.DataRowToObject(row, wfProcessDescInfo); result.Add(wfProcessDescInfo); } return(result); }
public int Delete(string wfMatrixID) { WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder(); whereBuilder.AppendItem(DB_FIELD_MATRIX_ID, wfMatrixID); whereBuilder.AppendTenantCode(); StringBuilder strBuilder = new StringBuilder(); strBuilder.Append(DELETE_SQL_CLAUSE); strBuilder.Append(whereBuilder.ToSqlString(TSqlBuilder.Instance)); strBuilder.Append(TSqlBuilder.Instance.DBStatementSeperator); strBuilder.Append(DELETE_MR_SQL_CLAUSE); strBuilder.Append(whereBuilder.ToSqlString(TSqlBuilder.Instance)); strBuilder.Append(TSqlBuilder.Instance.DBStatementSeperator); strBuilder.Append(DELETE_MC_SQL_CLAUSE); strBuilder.Append(whereBuilder.ToSqlString(TSqlBuilder.Instance)); strBuilder.Append(TSqlBuilder.Instance.DBStatementSeperator); strBuilder.Append(DELETE_MU_SQL_CLAUSE); strBuilder.Append(whereBuilder.ToSqlString(TSqlBuilder.Instance)); return(DbHelper.RunSqlWithTransaction(strBuilder.ToString())); }
protected override void AfterInnerUpdate(WfMatrixDefinition data, Dictionary <string, object> context) { StringBuilder strB = new StringBuilder(); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("MATRIX_DEF_KEY", data.Key); builder.AppendTenantCode(typeof(WfMatrixDimensionDefinition)); strB.AppendFormat("{0} {1}", DELETE_DIMENSION_SQL_CLAUSE, builder.ToSqlString(TSqlBuilder.Instance)); foreach (WfMatrixDimensionDefinition dd in data.Dimensions) { if (strB.Length > 0) { strB.Append(TSqlBuilder.Instance.DBStatementSeperator); } strB.Append(ORMapping.GetInsertSql(dd, TSqlBuilder.Instance)); } if (strB.Length > 0) { DbHelper.RunSql(strB.ToString(), GetConnectionName()); } CacheNotifyData notifyData = new CacheNotifyData(typeof(WfMatrixDefinitionCache), CalculateCacheKey(data.Key), CacheNotifyType.Invalid); UdpCacheNotifier.Instance.SendNotifyAsync(notifyData); MmfCacheNotifier.Instance.SendNotify(notifyData); }
/// <summary> /// 解锁 /// </summary> /// <param name="lockEntity">锁实体</param> public static void Unlock(params Lock[] lockEntity) { ExceptionHelper.FalseThrow <ArgumentNullException>(lockEntity != null, "lockEntity"); StringBuilder strWhere = new StringBuilder(255); for (int i = 0; i < lockEntity.Length; i++) { if (strWhere.Length > 0) { strWhere.Append(" OR "); } WhereSqlClauseBuilder objWCB = new WhereSqlClauseBuilder(); objWCB.AppendItem("LOCK_ID", lockEntity[i].LockID); objWCB.AppendItem("LOCK_PERSON_ID", lockEntity[i].PersonID); objWCB.AppendTenantCode(); strWhere.AppendFormat("({0})", objWCB.ToSqlString(TSqlBuilder.Instance)); } if (strWhere.Length > 0) { string sql = string.Format("DELETE FROM WF.LOCK WHERE {0}", strWhere.ToString()); DbHelper.RunSqlWithTransaction(sql); } }
public WfClientUserOperationLogPageQueryResult QueryUserOperationLogByProcessID(string processID, int startRowIndex, int maximumRows, string orderBy, int totalCount) { processID.CheckStringIsNullOrEmpty("processID"); OperationContext.Current.FillContextToOguServiceContext(); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("PROCESS_ID", processID); builder.AppendTenantCode(); if (orderBy.IsNullOrEmpty()) { orderBy = "ID DESC"; } QueryCondition qc = new QueryCondition(startRowIndex, maximumRows, "*", ORMapping.GetMappingInfo(typeof(UserOperationLog)).TableName, orderBy); qc.WhereClause = builder.ToSqlString(TSqlBuilder.Instance); return(QueryUserOperationLog(qc, totalCount)); }
/// <summary> /// 拼成查询条件 /// </summary> private void BuildWhereClause() { WhereSqlClauseBuilder wherebuilder = ConditionMapping.GetWhereSqlClauseBuilder(this.QueryCondition); wherebuilder.AppendTenantCode(); this.whereCondition.Value = wherebuilder.ToSqlString(TSqlBuilder.Instance); }
private static WhereSqlClauseBuilder GetWhereSqlClauseBuilder(string key) { WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("[KEY]", key); builder.AppendTenantCode(typeof(WfGlobalParameters)); return(builder); }
private static WhereSqlClauseBuilder PrepareProcessKeyWhereBuilder(string processKey) { WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("PROCESS_KEY", processKey); builder.AppendTenantCode(); return(builder); }
/// <summary> /// 增加ROLE_ID的查询条件 /// </summary> /// <param name="roleID"></param> /// <returns></returns> public static string ToRoleIDCriteria(this string roleID) { roleID.CheckStringIsNullOrEmpty("roleID"); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("ROLE_ID", roleID); builder.AppendTenantCode(); return builder.ToSqlString(TSqlBuilder.Instance); }
internal void FillMatrixRows(string matrixID, WfMatrixRowCollection rows) { WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder(); whereBuilder.AppendItem("R." + DB_FIELD_MATRIX_ID, matrixID); whereBuilder.AppendTenantCode("R.TENANT_CODE"); DataSet ds = DbHelper.RunSqlReturnDS(SELECT_SQL_CLAUSE + whereBuilder.ToSqlString(TSqlBuilder.Instance)); rows.CopyFrom(ds.Tables[0].DefaultView); }
/// <summary> /// 增加ROLE_ID的查询条件 /// </summary> /// <param name="roleID"></param> /// <returns></returns> public static string ToRoleIDCriteria(this string roleID) { roleID.CheckStringIsNullOrEmpty("roleID"); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("ROLE_ID", roleID); builder.AppendTenantCode(); return(builder.ToSqlString(TSqlBuilder.Instance)); }
private static DataTable LoadAddresses(string messageID) { WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("MESSAGE_ID", messageID); builder.AppendTenantCode(); string sql = string.Format("SELECT * FROM MSG.EMAIL_ADDRESSES WHERE {0}", builder.ToSqlString(TSqlBuilder.Instance)); return(DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]); }
private void ExecuteQuery() { WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); string appName = string.IsNullOrEmpty(txtApplicationName.Text) == true ? "全部" : txtApplicationName.Text; if (appName.IsNotEmpty()) { if ("全部" == appName) { if (!RolesDefineConfig.GetConfig().IsCurrentUserInRoles("ProcessAdmin")) { InSqlClauseBuilder inBuilder = new InSqlClauseBuilder(); inBuilder.AppendItem(AllApplicationNames()); builder.AppendItem("APPLICATION_NAME", inBuilder.ToSqlStringWithInOperator(TSqlBuilder.Instance), "", true); } } else { if ("其它" == appName) { builder.AppendItem("APPLICATION_NAME", " "); } else { builder.AppendItem("APPLICATION_NAME", appName); } } } if (!string.IsNullOrEmpty(txtProgramName.Text)) { builder.AppendItem("PROGRAM_NAME", "%" + TSqlBuilder.Instance.CheckQuotationMark(txtProgramName.Text, false) + "%", "like"); } if (!string.IsNullOrEmpty(txtProcessKey.Text)) { builder.AppendItem("PROCESS_KEY", "%" + TSqlBuilder.Instance.CheckQuotationMark(txtProcessKey.Text, false) + "%", "like"); } if (!string.IsNullOrEmpty(txtProcessName.Text)) { builder.AppendItem("PROCESS_NAME", "%" + TSqlBuilder.Instance.CheckQuotationMark(txtProcessName.Text, false) + "%", "like"); } if (!string.IsNullOrEmpty(ddlEnabled.SelectedValue)) { builder.AppendItem("ENABLED", TSqlBuilder.Instance.CheckQuotationMark(ddlEnabled.SelectedValue, false)); } builder.AppendTenantCode(); this.BindGrid(builder); }
/// <summary> /// 删除待办箱分类 /// </summary> /// <param name="categoryGuid">处理夹ID</param> public void DeleteCategory(string categoryID) { WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("CATEGORY_GUID", categoryID); builder.AppendTenantCode(typeof(TaskCategory)); string strSql = "UPDATE USER_TASK SET CATEGORY_GUID = NULL WHERE " + builder.ToSqlString(TSqlBuilder.Instance) + ";"; strSql += " DELETE WF.USER_TASK_CATEGORY WHERE " + builder.ToSqlString(TSqlBuilder.Instance); DbHelper.RunSqlWithTransaction(strSql, ConnectionDefine.DBConnectionName); }
private bool CheckScheduleInJob(string schID) { WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder(); whereBuilder.AppendItem("SCHEDULE_ID", schID); whereBuilder.AppendTenantCode(typeof(JobSchedule)); DataSet ds = DbHelper.RunSqlReturnDS( JobBaseAdapter.SELECT_JOB_SCHEDULES_ID_CLAUSE + whereBuilder.ToSqlString(TSqlBuilder.Instance), GetConnectionName()); return(ds.Tables[0].Rows.Count != 0 ? true : false); }
public ConnectiveSqlClauseCollection GetAclQueryConditionsByUser(string userID) { ConnectiveSqlClauseCollection result = new ConnectiveSqlClauseCollection(LogicOperatorDefine.Or); WhereSqlClauseBuilder builderUser = new WhereSqlClauseBuilder(); builderUser.AppendItem("OBJECT_ID", userID); builderUser.AppendTenantCode(); result.Add(builderUser); return(result); }
public static CheckLockResult CheckLock(string lockID, string personID) { ExceptionHelper.CheckStringIsNullOrEmpty(lockID, "lockID"); ExceptionHelper.CheckStringIsNullOrEmpty(personID, "personID"); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("LOCK_ID", lockID); builder.AppendTenantCode(); string sql = string.Format("SELECT *, GETDATE() AS [CURRENT_TIME] FROM WF.LOCK WHERE {0}", builder.ToSqlString(TSqlBuilder.Instance)); DataTable table = DbHelper.RunSqlReturnDS(sql).Tables[0]; return new CheckLockResult(personID, table); }
public WfClientUserOperationLogPageQueryResult QueryUserOperationLogByProcessID(string processID, int startRowIndex, int maximumRows, string orderBy, int totalCount) { processID.CheckStringIsNullOrEmpty("processID"); OperationContext.Current.FillContextToOguServiceContext(); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("PROCESS_ID", processID); builder.AppendTenantCode(); if (orderBy.IsNullOrEmpty()) orderBy = "ID DESC"; QueryCondition qc = new QueryCondition(startRowIndex, maximumRows, "*", ORMapping.GetMappingInfo(typeof(UserOperationLog)).TableName, orderBy); qc.WhereClause = builder.ToSqlString(TSqlBuilder.Instance); return QueryUserOperationLog(qc, totalCount); }
/// <summary> /// 删除EmailMessage /// </summary> /// <param name="action"></param> public void Delete(Action<WhereSqlClauseBuilder> action) { action.NullCheck("action"); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); action(builder); builder.AppendTenantCode(); StringBuilder strB = new StringBuilder(); using (StringWriter writer = new StringWriter(strB)) { WriteDeleteEmailAddressesSql(writer, builder); WriteDeleteEmailAttachmentsSql(writer, builder); writer.WriteLine("DELETE MSG.EMAIL_MESSAGES WHERE {0}", builder.ToSqlString(TSqlBuilder.Instance)); } DbHelper.RunSqlWithTransaction(strB.ToString(), GetConnectionName()); }
private void ExecuteQuery() { WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); string appName = string.IsNullOrEmpty(txtApplicationName.Text) == true ? "全部" : txtApplicationName.Text; if (appName.IsNotEmpty()) { if ("全部" == appName) { if (!RolesDefineConfig.GetConfig().IsCurrentUserInRoles("ProcessAdmin")) { InSqlClauseBuilder inBuilder = new InSqlClauseBuilder(); inBuilder.AppendItem(AllApplicationNames()); builder.AppendItem("APPLICATION_NAME", inBuilder.ToSqlStringWithInOperator(TSqlBuilder.Instance), "", true); } } else { if ("其它" == appName) { builder.AppendItem("APPLICATION_NAME", " "); } else { builder.AppendItem("APPLICATION_NAME", appName); } } } if (!string.IsNullOrEmpty(txtProgramName.Text)) builder.AppendItem("PROGRAM_NAME", "%" + TSqlBuilder.Instance.CheckQuotationMark(txtProgramName.Text, false) + "%", "like"); if (!string.IsNullOrEmpty(txtProcessKey.Text)) builder.AppendItem("PROCESS_KEY", "%" + TSqlBuilder.Instance.CheckQuotationMark(txtProcessKey.Text, false) + "%", "like"); if (!string.IsNullOrEmpty(txtProcessName.Text)) builder.AppendItem("PROCESS_NAME", "%" + TSqlBuilder.Instance.CheckQuotationMark(txtProcessName.Text, false) + "%", "like"); if (!string.IsNullOrEmpty(ddlEnabled.SelectedValue)) builder.AppendItem("ENABLED", TSqlBuilder.Instance.CheckQuotationMark(ddlEnabled.SelectedValue, false)); builder.AppendTenantCode(); this.BindGrid(builder); }
/// <summary> /// 用户或角色直接所属的角色矩阵ID /// </summary> /// <param name="operatorIDs">用户或角色所属的角色矩阵ID集合</param> /// <returns></returns> public List<string> OperatorBelongToRoleIDsDirectly(params string[] operatorIDs) { operatorIDs.NullCheck("userIDs"); List<string> result = new List<string>(); InSqlClauseBuilder inBuilder = new InSqlClauseBuilder("OPERATOR_ID"); inBuilder.AppendItem(operatorIDs); if (inBuilder.IsEmpty == false) { WhereSqlClauseBuilder tenantBuilder = new WhereSqlClauseBuilder(); tenantBuilder.AppendTenantCode(); string tenantCriteria = string.Empty; if (tenantBuilder.IsEmpty == false) tenantCriteria = " AND " + tenantBuilder.ToSqlString(TSqlBuilder.Instance); string sql = string.Format("SELECT ROLE_ID FROM WF.ROLE_PROPERTIES_USER_CONTAINERS WHERE {0}{1}", inBuilder.ToSqlString(TSqlBuilder.Instance), tenantCriteria); using (DbContext context = DbContext.GetContext(GetConnectionName())) { Database db = DatabaseFactory.Create(context); DbCommand cmd = db.GetSqlStringCommand(sql); using (var dr = db.ExecuteReader(cmd)) { while (dr.Read()) result.Add(dr.GetString(0)); } } } return result; }
/// <summary> /// 获得指定ID的副本 和 它之前的一切副本 按照时间正排序 /// </summary> /// <param name="id">id</param> /// <returns>MaterialList</returns> public MaterialList GetPreMaterialsCopyVersion(string id) { ExceptionHelper.CheckStringIsNullOrEmpty(id, "id"); WhereSqlClauseBuilder whereSqlClause = new WhereSqlClauseBuilder(); whereSqlClause.AppendItem("PARENT_ID", string.Format("(SELECT PARENT_ID FROM WF.MATERIAL WHERE ID = {0})", TSqlBuilder.Instance.CheckQuotationMark(id, true)), "=", true); whereSqlClause.AppendItem("MODIFY_TIME", string.Format("(SELECT MODIFY_TIME FROM WF.MATERIAL WHERE ID = {0})", TSqlBuilder.Instance.CheckQuotationMark(id, true)), "<=", true); whereSqlClause.AppendTenantCode(typeof(Material)); OrderBySqlClauseBuilder orderBySqlClause = new OrderBySqlClauseBuilder(); orderBySqlClause.AppendItem("MODIFY_TIME", FieldSortDirection.Ascending); string sql = string.Format(@"SELECT * FROM WF.MATERIAL WHERE {0} AND VERSION_TYPE = {1} ORDER BY {2}", whereSqlClause.ToSqlString(TSqlBuilder.Instance), Convert.ToInt16(MaterialVersionType.CopyVersion), orderBySqlClause.ToSqlString(TSqlBuilder.Instance)); MaterialList materials = new MaterialList(); using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName())) { using (IDataReader dr = DbHelper.RunSqlReturnDR(sql, GetConnectionName())) { while (dr.Read()) { Material material = new Material(); ORMapping.DataReaderToObject(dr, material); materials.Add(material); } } } return materials; }
/// <summary> /// 获得指定ID的Material /// </summary> /// <param name="materialID">指定ID</param> /// <returns>MaterialList</returns> public MaterialList LoadMaterialByMaterialID(string materialID) { ExceptionHelper.CheckStringIsNullOrEmpty(materialID, "materialID"); MaterialList materials = new MaterialList(); WhereSqlClauseBuilder wBuilder = new WhereSqlClauseBuilder(); wBuilder.AppendItem("ID", materialID); wBuilder.AppendTenantCode(typeof(Material)); string sql = "SELECT * FROM WF.MATERIAL WHERE " + wBuilder.ToSqlString(TSqlBuilder.Instance); using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName())) { using (IDataReader dr = DbHelper.RunSqlReturnDR(sql, GetConnectionName())) { while (dr.Read()) { Material material = new Material(); ORMapping.DataReaderToObject(dr, material); materials.Add(material); } } } DecorateMaterials(materials); return materials; }
/// <summary> /// 解锁 /// </summary> /// <param name="lockEntity">锁实体</param> public static void Unlock(params Lock[] lockEntity) { ExceptionHelper.FalseThrow<ArgumentNullException>(lockEntity != null, "lockEntity"); StringBuilder strWhere = new StringBuilder(255); for (int i = 0; i < lockEntity.Length; i++) { if (strWhere.Length > 0) strWhere.Append(" OR "); WhereSqlClauseBuilder objWCB = new WhereSqlClauseBuilder(); objWCB.AppendItem("LOCK_ID", lockEntity[i].LockID); objWCB.AppendItem("LOCK_PERSON_ID", lockEntity[i].PersonID); objWCB.AppendTenantCode(); strWhere.AppendFormat("({0})", objWCB.ToSqlString(TSqlBuilder.Instance)); } if (strWhere.Length > 0) { string sql = string.Format("DELETE FROM WF.LOCK WHERE {0}", strWhere.ToString()); DbHelper.RunSqlWithTransaction(sql); } }
private static string GetUpdateSql(WfPersistQueue pq) { ORMappingItemCollection mappingInfo = ORMapping.GetMappingInfo(pq.GetType()); UpdateSqlClauseBuilder uBuilder = ORMapping.GetUpdateSqlClauseBuilder(pq, mappingInfo, "UpdateTag"); uBuilder.AppendItem("UPDATE_TAG", "WF.PROCESS_INSTANCES.UPDATE_TAG", "=", true); WhereSqlClauseBuilder wBuilder = new WhereSqlClauseBuilder(); wBuilder.AppendItem("PROCESS_ID", pq.ProcessID); wBuilder.AppendTenantCode(); string sql = string.Format("UPDATE {0} SET {1} FROM {0} INNER JOIN WF.PROCESS_INSTANCES ON INSTANCE_ID = PROCESS_ID WHERE {2}", mappingInfo.TableName, uBuilder.ToSqlString(TSqlBuilder.Instance), wBuilder.ToSqlString(TSqlBuilder.Instance)); return sql; }
/// <summary> /// 获取可用的排序号 /// </summary> /// <param name="userID">用户ID</param> /// <returns></returns> public int GetMaxSort(string userID) { ExceptionHelper.TrueThrow<ArgumentNullException>(null == userID, "userID"); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("USER_ID", DeluxeIdentity.CurrentUser.ID); builder.AppendTenantCode(typeof(TaskCategory)); int result = 0; string strSQL = string.Format("SELECT MAX(INNER_SORT_ID) AS NUM FROM WF.USER_TASK_CATEGORY WHERE {0}", builder.ToSqlString(TSqlBuilder.Instance)); object num = DbHelper.RunSqlReturnScalar(strSQL); if (num.ToString() != string.Empty) { result = (int)num; //当排序号以达到最大值999时,仍返回最大值 if (result < 999) { result++; } } return result; }
/// <summary> /// 根据角色ID判断哪些角色有了扩展属性定义 /// </summary> /// <param name="roleIDs"></param> /// <returns></returns> public Dictionary<string, bool> AreExist(IEnumerable<string> roleIDs) { roleIDs.NullCheck("roleIDs"); Dictionary<string, bool> result = new Dictionary<string, bool>(); InSqlClauseBuilder builder = new InSqlClauseBuilder(); foreach (string roleID in roleIDs) { if (result.ContainsKey(roleID) == false) { result.Add(roleID, false); builder.AppendItem(roleID); } } if (result.Count > 0) { WhereSqlClauseBuilder tenantBuilder = new WhereSqlClauseBuilder(); tenantBuilder.AppendTenantCode(); string tenantCriteria = string.Empty; if (tenantBuilder.IsEmpty == false) tenantCriteria = " AND " + tenantBuilder.ToSqlString(TSqlBuilder.Instance); string sql = string.Format("SELECT ROLE_ID FROM WF.ROLE_PROPERTIES_DEFINITIONS WHERE ROLE_ID IN ({0}){1} GROUP BY ROLE_ID", builder.ToSqlString(TSqlBuilder.Instance), tenantCriteria); DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; foreach (DataRow row in table.Rows) result[row["ROLE_ID"].ToString()] = true; } return result; }
/// <summary> /// 根据SQL获取category /// </summary> /// <param name="where"></param> /// <param name="orderby"></param> /// <param name="selector"></param> /// <returns></returns> public TaskCategoryCollection GetCategoriesByWhereCondition(string where, string orderby, List<string> selector) { string sql = string.Format("SELECT"); if (selector != null && selector.Count > 0) { foreach (string sel in selector) { sql += TSqlBuilder.Instance.CheckQuotationMark(sel, true); } } else sql += " * "; WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("USER_ID", DeluxeIdentity.CurrentUser.ID); builder.AppendTenantCode(typeof(TaskCategory)); sql += string.Format("FROM WF.USER_TASK_CATEGORY WHERE {0}", builder.ToSqlString(TSqlBuilder.Instance)); if (where != string.Empty && where != null) sql += string.Format("AND ({0})", where); if (orderby != string.Empty && orderby != null) sql += string.Format("ORDER BY {0}", orderby); DataView dv = DbHelper.RunSqlReturnDS(sql).Tables[0].DefaultView; TaskCategoryCollection tcc = new TaskCategoryCollection(); tcc.LoadFromDataView(dv); return tcc; }
private void SelectExcutQuery() { if (string.IsNullOrEmpty(this.tb_AllKeys.Text) == false) { InSqlClauseBuilder inBuilder = new InSqlClauseBuilder(); inBuilder.DataField = "PROCESS_KEY"; inBuilder.AppendItem(this.tb_AllKeys.Text.Split(',')); WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder(); whereBuilder.AppendTenantCode(); this.BindGrid(new ConnectiveSqlClauseCollection(LogicOperatorDefine.And, whereBuilder, inBuilder)); } }
/// <summary> /// 删除待办箱分类 /// </summary> /// <param name="categoryGuid">处理夹ID</param> public void DeleteCategory(string categoryID) { WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("CATEGORY_GUID", categoryID); builder.AppendTenantCode(typeof(TaskCategory)); string strSql = "UPDATE USER_TASK SET CATEGORY_GUID = NULL WHERE " + builder.ToSqlString(TSqlBuilder.Instance) + ";"; strSql += " DELETE WF.USER_TASK_CATEGORY WHERE " + builder.ToSqlString(TSqlBuilder.Instance); DbHelper.RunSqlWithTransaction(strSql); }
public MaterialList LoadVersionMaterialsBySceneKey(string resourceID, string wfActivityName) { MaterialList copyVersionMaterials = new MaterialList(); WhereSqlClauseBuilder whereSqlClause = new WhereSqlClauseBuilder(); whereSqlClause.AppendItem("RESOURCE_ID", resourceID); whereSqlClause.AppendItem("VERSION_TYPE", Convert.ToInt16(MaterialVersionType.CopyVersion).ToString()); whereSqlClause.AppendItem("WF_ACTIVITY_NAME", wfActivityName); whereSqlClause.AppendTenantCode(typeof(Material)); string sql = string.Format("SELECT * FROM WF.MATERIAL WHERE {0}", whereSqlClause.ToSqlString(TSqlBuilder.Instance)); using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName())) { using (IDataReader dr = DbHelper.RunSqlReturnDR(sql, GetConnectionName())) { while (dr.Read()) { Material material = new Material(); ORMapping.DataReaderToObject(dr, material); copyVersionMaterials.Add(material); } } } DecorateMaterials(copyVersionMaterials); return copyVersionMaterials; }
private static EmailMessage LoadEmailMessage(string messageID, string tableName) { messageID.CheckStringIsNullOrEmpty("messageID"); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("MESSAGE_ID", messageID); builder.AppendTenantCode(); string sql = string.Format("SELECT * FROM {0} WHERE {1}", tableName, builder.ToSqlString(TSqlBuilder.Instance)); DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; (table.Rows.Count > 0).FalseThrow("不能找到MESSAGE_ID为{0}的记录", messageID); EmailMessage message = new EmailMessage(); DataRowToEmailMessage(table.Rows[0], message); return message; }
public WfClientProcessDescriptorInfoPageQueryResult QueryProcessDescriptorInfo(int startRowIndex, int maximumRows, string where, string orderBy, int totalCount) { OperationContext.Current.FillContextToOguServiceContext(); if (orderBy.IsNullOrEmpty()) orderBy = "MODIFY_TIME DESC"; string selectFields = "PROCESS_KEY, APPLICATION_NAME, PROGRAM_NAME, PROCESS_NAME, ENABLED, CREATE_TIME, CREATOR_ID, CREATOR_NAME, MODIFY_TIME, MODIFIER_ID, MODIFIER_NAME, IMPORT_TIME, IMPORT_USER_ID, IMPORT_USER_NAME"; QueryCondition qc = new QueryCondition( startRowIndex, maximumRows, selectFields, ORMapping.GetMappingInfo(typeof(WfProcessDescriptorInfo)).TableName, orderBy); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendTenantCode(); if (where.IsNotEmpty()) where += " AND "; where += builder.ToSqlString(TSqlBuilder.Instance); qc.WhereClause = where; CommonAdapter adapter = new CommonAdapter(WfProcessDescriptorInfoAdapter.Instance.ConnectionName); WfProcessDescriptorInfoCollection processInfo = adapter.SplitPageQuery<WfProcessDescriptorInfo, WfProcessDescriptorInfoCollection>(qc, ref totalCount); WfClientProcessDescriptorInfoCollection clientInfo = new WfClientProcessDescriptorInfoCollection(); WfClientProcessDescriptorInfoConverter.Instance.ServerToClient(processInfo, clientInfo); WfClientProcessDescriptorInfoPageQueryResult result = new WfClientProcessDescriptorInfoPageQueryResult(); result.TotalCount = totalCount; result.QueryResult.CopyFrom(clientInfo); return result; }
public EmailMessageCollection LoadCandidateMessages(int batchCount) { string topDesp = batchCount >= 0 ? string.Format(" TOP {0} ", batchCount) : string.Empty; WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("1", 1); builder.AppendTenantCode(); string sql = string.Format("SELECT {0}* FROM MSG.EMAIL_MESSAGES WITH (UPDLOCK READPAST) WHERE {1} ORDER BY SORT_ID", topDesp, builder.ToSqlString(TSqlBuilder.Instance)); EmailMessageCollection result = new EmailMessageCollection(); DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; foreach (DataRow row in table.Rows) { EmailMessage message = new EmailMessage(); DataRowToEmailMessage(row, message); result.Add(message); } return result; }
private static DataTable LoadAddresses(string messageID) { WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("MESSAGE_ID", messageID); builder.AppendTenantCode(); string sql = string.Format("SELECT * FROM MSG.EMAIL_ADDRESSES WHERE {0}", builder.ToSqlString(TSqlBuilder.Instance)); return DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; }
public WfClientProcessCurrentInfoPageQueryResult QueryProcesses(WfClientProcessQueryCondition condition, int startRowIndex, int maximumRows, string orderBy, int totalCount) { condition.NullCheck("condition"); OperationContext.Current.FillContextToOguServiceContext(); WfProcessQueryCondition serverCondition = null; WfClientProcessQueryConditionConverter.Instance.ClientToServer(condition, ref serverCondition); if (orderBy.IsNullOrEmpty()) orderBy = "START_TIME DESC"; ConnectiveSqlClauseCollection connective = serverCondition.ToSqlBuilder(); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("COMMITTED", "1"); builder.AppendTenantCode(); connective.Add(builder); QueryCondition qc = new QueryCondition(startRowIndex, maximumRows, ORMapping.GetSelectFieldsNameSql<WfProcessCurrentInfo>(), ORMapping.GetMappingInfo(typeof(WfProcessCurrentInfo)).TableName, orderBy); qc.WhereClause += connective.ToSqlString(TSqlBuilder.Instance); return QueryProcessInfo(qc, totalCount); }
internal EmailAttachmentCollection LoadAttachments(string messageID) { WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("MESSAGE_ID", messageID); builder.AppendTenantCode(); string sql = string.Format("SELECT * FROM MSG.EMAIL_ATTACHMENTS WHERE {0} ORDER BY SORT_ID", builder.ToSqlString(TSqlBuilder.Instance)); EmailAttachmentCollection result = new EmailAttachmentCollection(); ORMapping.DataViewToCollection(result, DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0].DefaultView); return result; }