public static WhereSqlClauseBuilder GetWhereBuilder <T>(string property, bool l2R = false, string las = null, string ras = null) { WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); Type t = typeof(T); var lomapp = ORMapping.GetMappingInfo(t); var p = t.GetProperty(property); if (p == null) { return(builder); } var lattr = p.GetCustomAttributes(typeof(JoinMappingCondtionAttribute), true).FirstOrDefault() as JoinMappingCondtionAttribute; if (lattr == null) { return(builder); } string lf = string.Format("{0}.{1}", las.IsNullOrWhiteSpace() ? lomapp.TableName : las, lattr.DataFieldName); string rf = string.Format("{0}.{1}", ras.IsNullOrWhiteSpace() ? lattr._subClassMappingTable : ras, lattr._subTableField); if (l2R) { builder.AppendItem(rf, lf, "=", true); } else { builder.AppendItem(lf, rf, "=", true); } return(builder); }
/// <summary> /// T1 是子类 /// </summary> /// <typeparam name="TLt"></typeparam> /// <typeparam name="TRt"></typeparam> /// <param name="lp"></param> /// <param name="rp"></param> /// <param name="lals"></param> /// <param name="rals"></param> /// <param name="mode"></param> /// <returns>获得连接sql</returns> private string GetJoinCamal <TLt, TRt>(string lp, string rp, string lals = null, string rals = null, JoinMode mode = JoinMode.InnerJoin) { Type lt = typeof(TLt); Type rt = typeof(TRt); var lmapp = ORMapping.GetMappingInfo(lt); var lattr = lmapp.Find(m => m.PropertyName == lp); if (lattr == null) { return(string.Empty); } var rmapp = ORMapping.GetMappingInfo(rt); var rattr = rmapp.Find(m => m.PropertyName == rp); if (rattr == null) { return(string.Empty); } string lfield = lattr.DataFieldName; string rfield = rattr.DataFieldName; return(JoinCamal(lals, rals, mode, rfield, lmapp.TableName, lfield, rmapp.TableName)); }
public AMSChannelCollection LoadUnusedChannels(string eventID) { string sql = string.Format("SELECT C.* FROM AMS.Channels C WHERE C.ID NOT IN (SELECT ChannelID FROM AMS.EventsChannels WHERE EventID = {0})", TSqlBuilder.Instance.CheckUnicodeQuotationMark(eventID)); return(this.QueryData <AMSChannel, AMSChannelCollection>(ORMapping.GetMappingInfo <AMSChannel>(), sql)); }
/// <summary> /// 删除某个事件下的频道(UI上用于频道列表) /// </summary> /// <param name="eventID"></param> /// <param name="channelIDs"></param> /// <param name="includeDefault">是否包含默认频道</param> public int DeleteChannels(string eventID, IEnumerable <string> channelIDs, bool includeDefault = false) { eventID.CheckStringIsNullOrEmpty("eventID"); channelIDs.NullCheck("channelIDs"); InSqlClauseBuilder builder = new InSqlClauseBuilder("ChannelID"); channelIDs.ForEach(channelID => builder.AppendItem(channelID)); ORMappingItemCollection mappings = ORMapping.GetMappingInfo(typeof(AMSEventChannel)); string sql = string.Format("DELETE {0} WHERE {1}", mappings.TableName, builder.ToSqlStringWithInOperator(TSqlBuilder.Instance)); int result = 0; if (builder.IsEmpty == false) { if (includeDefault == false) { sql += " AND IsDefault <> 1"; } result = DbHelper.RunSql(sql, this.GetConnectionName()); } return(result); }
/// <summary> /// 按某条件产生的Sql语句 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="where"></param> /// <returns></returns> public static string GetDeleteByWhere <T>(string where) { var sql = new StringBuilder(); sql.AppendFormat("DELETE FROM {0} WHERE {1}", ORMapping.GetMappingInfo <T>().TableName, @where); return(sql.ToString()); }
public AUSchemaCategory LoadByID(string id, DateTime timePoint) { var conditions = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder(timePoint); WhereSqlClauseBuilder where = new WhereSqlClauseBuilder(); where.AppendItem("ID", id); conditions.Add(where); AUSchemaCategory cate = null; AUCommon.DoDbAction(() => { using (DbContext context = DbContext.GetContext(this.GetConnectionName())) { VersionedObjectAdapterHelper.Instance.FillData(ORMapping.GetMappingInfo(typeof(AUSchemaCategory)).TableName, conditions, this.GetConnectionName(), reader => { if (reader.Read()) { cate = new AUSchemaCategory(); ORMapping.DataReaderToObject <AUSchemaCategory>(reader, cate); } }); } }); return(cate); }
/// <summary> /// 指定查询条件 /// </summary> /// <param name="qc"></param> protected override void OnBuildQueryCondition(QueryCondition qc) { qc.SelectFields = @"GroupID,Name,Description"; qc.FromClause = ORMapping.GetMappingInfo <ConditionalGroup>().TableName; qc.OrderByClause = GetOrderByString(qc); base.OnBuildQueryCondition(qc); }
/// <summary> /// 从队列中获取n条记录,并进行处理 /// </summary> /// <param name="count"></param> /// <returns></returns> public WfPersistQueueCollection FetchQueueItemsAndDoOperation(int count) { ORMappingItemCollection mappingInfo = ORMapping.GetMappingInfo(typeof(WfPersistQueue)); string top = count < 0 ? string.Empty : "TOP " + count; string sql = string.Format("SELECT {0} * FROM {1} WITH (UPDLOCK, READPAST) ORDER BY SORT_ID", top, mappingInfo.TableName); WfPersistQueueCollection result = new WfPersistQueueCollection(); using (TransactionScope scope = TransactionScopeFactory.Create()) { DataView view = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0].DefaultView; ORMapping.DataViewToCollection(result, view); foreach (WfPersistQueue pq in result) { DoQueueOperationAndMove(pq); } scope.Complete(); } return(result); }
public WfClientProcessCurrentInfoPageQueryResult QueryBranchProcesses(string ownerActivityID, string ownerTemplateKey, int startRowIndex, int maximumRows, string orderBy, int totalCount) { ownerActivityID.NullCheck("ownerActivityID"); OperationContext.Current.FillContextToOguServiceContext(); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("OWNER_ACTIVITY_ID", ownerActivityID); if (ownerTemplateKey.IsNotEmpty()) { builder.AppendItem("OWNER_TEMPLATE_KEY", ownerTemplateKey); } if (orderBy.IsNullOrEmpty()) { orderBy = "START_TIME"; } QueryCondition qc = new QueryCondition(startRowIndex, maximumRows, "INSTANCE_ID, OWNER_ACTIVITY_ID, STATUS, PROCESS_NAME, DESCRIPTOR_KEY, START_TIME, END_TIME", ORMapping.GetMappingInfo(typeof(WfProcessCurrentInfo)).TableName, orderBy); qc.WhereClause = builder.ToSqlString(TSqlBuilder.Instance); return(QueryProcessInfo(qc, totalCount)); }
private void DeleteProcesses(Action <WhereSqlClauseBuilder> action) { action.NullCheck("action"); ORMappingItemCollection mapping = ORMapping.GetMappingInfo <WfProcessInstanceData>(); WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder(); action(whereBuilder); string sql = string.Format("DELETE {0} WHERE {1}", mapping.TableName, whereBuilder.ToSqlString(TSqlBuilder.Instance)); WfProcessCurrentInfoCollection processesInfo = WfProcessCurrentInfoAdapter.Instance.Load(false, action); Dictionary <object, object> context = new Dictionary <object, object>(); using (TransactionScope scope = TransactionScopeFactory.Create()) { DbHelper.RunSql(sql, GetConnectionName()); WfProcessCurrentActivityAdapter.Instance.DeleteProcessActivities(processesInfo); WfRelativeProcessAdapter.Instance.Delete(processesInfo); WfExtraPersistenceSettings.GetConfig().GetPersisters().DeleteData(processesInfo, context); scope.Complete(); } }
/// <summary> /// 指定查询条件 /// </summary> /// <param name="qc"></param> protected override void OnBuildQueryCondition(QueryCondition qc) { qc.SelectFields = @"Code,SupplierApplicationCode,SupplierCode,SupplierLevelCode,SupplierCompanyCode,Address,Shareholder,TotalAssets,MainResults,Authentication,AuthenticationAttachment,Other,DirectReason,MainProductCategories,LegalPerson,RegisterAddress,RegisterMoney,RegisterYear,BusinessLicenceNumber,OrgnizationCodeNumber,BusinessLicenceStartDate,BusinessLicenceEndDate,TaxNo,SupplierCompanyCnName,SupplierCompanyEnName,SupplierName,WebSite,Status,Creator,CreateTime,Modifier,ModifyTime,ValidStatus"; qc.FromClause = ORMapping.GetMappingInfo <Supplier>().TableName; qc.OrderByClause = GetOrderByString(qc); base.OnBuildQueryCondition(qc); }
/// <summary> /// 根据已经完成系统任务创建新任务 /// </summary> /// <param name="taskID">被移动的任务的ID</param> /// <param name="status">重置任务的状态</param> public void MoveToNoRunningTask(string taskID) { var completedTask = this.Load(taskID); (completedTask != null).FalseThrow <ArgumentException>("ID为 {0} 的任务不存在", taskID); PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration(string.Format("MoveNoRunning({0})", this.GetType().FullName), () => { Dictionary <string, object> context = new Dictionary <string, object>(); ORMappingItemCollection mappingsTask = ORMapping.GetMappingInfo <SysTask>(); var task = completedTask.CreateNewSystask(UuidHelper.NewUuidString());; StringBuilder sql = new StringBuilder(); sql.Append(ORMapping.GetInsertSql(task, mappingsTask, TSqlBuilder.Instance)); sql.Append(TSqlBuilder.Instance.DBStatementSeperator); using (TransactionScope scope = TransactionScopeFactory.Create()) { DbHelper.RunSql(sql.ToString(), this.GetConnectionName()); scope.Complete(); } }); }
public JobScheduleWithJobIDCollection LoadByJobID(params string[] jobIDs) { jobIDs.NullCheck("jobIDs"); InSqlClauseBuilder inBuilder = new InSqlClauseBuilder("JOB_ID"); inBuilder.AppendItem(jobIDs); JobScheduleWithJobIDCollection result = null; if (inBuilder.Count > 0) { ConnectiveSqlClauseCollection builder = new ConnectiveSqlClauseCollection(inBuilder, new WhereSqlClauseBuilder().AppendTenantCode(typeof(JobSchedule))); string sql = string.Format(QUERY_SCHEDULE_DEF_BY_JOB_ID_SQL_CLAUSE, builder.ToSqlString(TSqlBuilder.Instance)); result = QueryData <JobScheduleWithJobID, JobScheduleWithJobIDCollection>( ORMapping.GetMappingInfo <JobScheduleWithJobID>(), sql); } else { result = new JobScheduleWithJobIDCollection(); } return(result); }
private static string GetUserTaskSelectFields(UserTaskFieldDefine returnFields) { ORMappingItemCollection mappings = ORMapping.GetMappingInfo <UserTask>(); StringBuilder strB = new StringBuilder(); if (returnFields != UserTaskFieldDefine.All) { foreach (EnumItemDescription desp in EnumItemDescriptionAttribute.GetDescriptionList(typeof(UserTaskFieldDefine))) { UserTaskFieldDefine enumItem = (UserTaskFieldDefine)desp.EnumValue; if ((enumItem & returnFields) != UserTaskFieldDefine.None) { ORMappingItem mappingItem = GetMappingFromPropertyName(enumItem.ToString(), mappings); if (mappingItem != null) { if (strB.Length > 0) { strB.Append(", "); } strB.Append(mappingItem.DataFieldName); } } } } else { strB.Append("*"); } return(strB.ToString()); }
/// <summary> /// /// </summary> /// <param name="openID"></param> /// <returns></returns> public OpenIDBinding GetBindingByOpenID(string openID) { ExceptionHelper.CheckStringIsNullOrEmpty(openID, "openID"); ORMappingItemCollection mappings = ORMapping.GetMappingInfo(typeof(OpenIDBinding)); string sql = string.Format("SELECT * FROM {0} WHERE OPEN_ID = {1}", mappings.TableName, TSqlBuilder.Instance.CheckUnicodeQuotationMark(openID)); DataTable table; using (DbContext context = DbContext.GetContext(DataAdapter.DBConnectionName)) { Database db = DatabaseFactory.Create(DataAdapter.DBConnectionName); table = db.ExecuteDataSet(CommandType.Text, sql).Tables[0]; } OpenIDBinding binding = null; if (table.Rows.Count > 0) { binding = new OpenIDBinding(); ORMapping.DataRowToObject(table.Rows[0], binding); } return(binding); }
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="connectiveSqlClauses"></param> /// <param name="condtion"></param> /// <param name="table"></param> public static WhereSqlClauseBuilder GetCondition(this ConnectiveSqlClauseCollection connectiveSqlClauses, object condtion, string table = null) { Type t = condtion.GetType(); var builder = new WhereSqlClauseBuilder(); var items = ConditionMapping.GetMappingInfo(t); if (table == null) { table = ORMapping.GetMappingInfo(t).TableName; } string tablename = string.Format("{0}.", table); foreach (ConditionMappingItem item in items) { if (string.IsNullOrWhiteSpace(item.SubClassPropertyName) == false) { continue; } object data; bool b = condtion.IsTypeDefaultValue(item, out data); if (b) { continue; } string field = string.Format(item.DataFieldName, tablename); if (field.Contains(tablename) == false) { field = string.Format("{0} {1}", tablename, item.DataFieldName); } builder.AppendItem(field, data, item.Operation, item.Template, item.IsExpression); } connectiveSqlClauses.Add(builder); return(builder); }
public SchemaObjectCollection LoadCurrentObjects <T>(string ownerID) where T : SchemaObjectBase { ownerID.CheckStringIsNullOrEmpty("ownerID"); var timePointBuilder = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder(DateTime.MinValue); WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder(); whereBuilder.AppendItem("C.OwnerID", ownerID); timePointBuilder.Add(whereBuilder); string sql = string.Format( "SELECT SC.* FROM {0} SC INNER JOIN SC.ConditionCalculateResults C ON SC.ID = C.ObjectID WHERE {1}", ORMapping.GetMappingInfo(typeof(T)).TableName, timePointBuilder.ToSqlString(TSqlBuilder.Instance)); SchemaObjectCollection result = new SchemaObjectCollection(); using (DbContext context = DbContext.GetContext(this.GetConnectionName())) { result.LoadFromDataView(DbHelper.RunSPReturnDS(sql, this.GetConnectionName()).Tables[0].DefaultView); } return(result); }
private WfProcessCollection LoadProcesses(Action <WhereSqlClauseBuilder> action) { action.NullCheck("action"); var whereBuilder = new WhereSqlClauseBuilder(); action(whereBuilder); var mapping = ORMapping.GetMappingInfo <WfProcessInstanceData>(); string[] fields = ORMapping.GetSelectFieldsName(mapping, "Data"); var sql = string.Format("SELECT {0},{1} FROM {2} WHERE {3}", string.Join(",", fields), BINARYDATA, mapping.TableName, whereBuilder.ToSqlString(TSqlBuilder.Instance)); var table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; WfProcessCollection result = null; PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration("DataTableToProcessCollection", () => result = DataTableToProcessCollection(table) ); return(result); }
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)); }
private DataView InnerQuery(string entityID, int startRowIndex, int pageSize, string orderBy, ref int totalCount) { WhereSqlClauseBuilder wsc = new WhereSqlClauseBuilder(); wsc.AppendItem("status", (int)SchemaObjectStatus.Normal); wsc.AppendItem("EntityCode", entityID); QueryCondition qc = new QueryCondition(startRowIndex, pageSize, "*", ORMapping.GetMappingInfo <DEEntityInstanceBase>().TableName, orderBy, wsc.ToSqlString(TSqlBuilder.Instance)); TSqlCommonAdapter adapter = new TSqlCommonAdapter(GetConnectionName()); DataSet ds = adapter.SplitPageQuery(qc, totalCount <= 0); DataView result = ds.Tables[0].DefaultView; if (ds.Tables.Count > 1) { totalCount = (int)ds.Tables[1].Rows[0][0]; } //当页码超出索引的,返回最大页 if (result.Count == 0 && totalCount > 0) { int newStartRowIndex = (totalCount - 1) / pageSize * pageSize; totalCount = -1; result = this.Query(entityID, newStartRowIndex, pageSize, orderBy, ref totalCount); } return(result); }
public void UpdateUserView(AMSUserView userView) { userView.NullCheck("userView"); Dictionary<string, object> context = new Dictionary<string, object>(); ORMappingItemCollection mappingInfo = this.GetMappingInfo(context); StringBuilder strB = new StringBuilder(); UpdateSqlClauseBuilder updateBuilder = ORMapping.GetUpdateSqlClauseBuilder(userView, mappingInfo); updateBuilder.AppendItem("LastAccessTime", "GETUTCDATE()", "=", true); strB.AppendFormat("UPDATE {0} SET {1} WHERE {2}", mappingInfo.TableName, updateBuilder.ToSqlString(TSqlBuilder.Instance), ORMapping.GetWhereSqlClauseBuilderByPrimaryKey(userView, mappingInfo).ToSqlString(TSqlBuilder.Instance)); strB.Append(TSqlBuilder.Instance.DBStatementSeperator); strB.AppendFormat("IF @@ROWCOUNT = 0\n"); strB.Append("BEGIN\n"); strB.Append(this.GetInsertSql(userView, mappingInfo, context) + "\n"); strB.Append(TSqlBuilder.Instance.DBStatementSeperator); string eventTableName = ORMapping.GetMappingInfo(typeof(AMSEvent)).TableName; strB.AppendFormat("UPDATE {0} SET Views = Views + 1 WHERE ID = {1}\n", eventTableName, TSqlBuilder.Instance.CheckUnicodeQuotationMark(userView.EventID)); strB.Append("END\n"); DbHelper.RunSqlWithTransaction(strB.ToString(), this.GetConnectionName()); }
private static string PrepareInsertPropertyDefineSql(SchemaDefine data, SchemaPropertyDefine pd) { InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(pd); builder.AppendItem("SchemaName", data.Name); return(string.Format("INSERT INTO {0}{1}", ORMapping.GetMappingInfo(pd.GetType()).TableName, builder.ToSqlString(TSqlBuilder.Instance))); }
private static ORMappingItem GetMappingItemFromIDType(UserTaskIDType idType) { ORMappingItemCollection mappings = ORMapping.GetMappingInfo <UserTask>(); ORMappingItem keyItem = GetMappingFromPropertyName(idType.ToString(), mappings); ExceptionHelper.FalseThrow(keyItem != null, "不能找到idType为{0}对应的字段", idType.ToString()); return(keyItem); }
/// <summary> /// 批量更新某些字段的值 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="action"></param> /// <param name="where"></param> /// <returns></returns> public static string BathUpdate <T>(IConnectiveSqlClause where, Action <UpdateSqlClauseBuilder> action) { var updateBuilder = new UpdateSqlClauseBuilder(); action(updateBuilder); return(String.Format("UPDATE {0} SET {1} WHERE {2}", ORMapping.GetMappingInfo <T>().TableName, updateBuilder.ToSqlString(TSqlBuilder.Instance), where.ToSqlString(TSqlBuilder.Instance))); }
private static string GetInsertSql(WfPersistQueue pq) { ORMappingItemCollection mappingInfo = ORMapping.GetMappingInfo(pq.GetType()); string sql = string.Format("INSERT INTO {0}(PROCESS_ID, UPDATE_TAG, TENANT_CODE) SELECT INSTANCE_ID, UPDATE_TAG, TENANT_CODE FROM WF.PROCESS_INSTANCES WHERE INSTANCE_ID = {1}", mappingInfo.TableName, TSqlBuilder.Instance.CheckUnicodeQuotationMark(pq.ProcessID)); return(sql); }
/// <summary> /// 添加一行数据,并返回新主键 /// </summary> /// <param name="data"></param> /// <returns></returns> public int InsertData(UserOperationLog data) { ORMappingItemCollection mappings = ORMapping.GetMappingInfo <UserOperationLog>(); string sql = ORMapping.GetInsertSql(data, mappings, TSqlBuilder.Instance); decimal result = (decimal)DbHelper.RunSqlReturnScalar(string.Format("{0} \n SELECT @@IDENTITY", sql), this.GetConnectionName()); return(decimal.ToInt32(result)); }
/// <summary> /// 批量更新某些字段的值 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="graph"></param> /// <param name="where"></param> /// <param name="requriedpropertites"></param> /// <returns></returns> public static string BathUpdate <T>(T graph, string where, params string[] requriedpropertites) { var mapping = ORMapping.GetMappingInfo <T>(); UpdateSqlClauseBuilder updateBuilder = ORMapping.GetUpdateSqlClauseBuilder(graph, mapping, GetExceptProperties <T>(requriedpropertites)); return(String.Format("UPDATE {0} SET {1} WHERE {2}", mapping.TableName, updateBuilder.ToSqlString(TSqlBuilder.Instance), @where)); }
private static void eventContainer_SetUserTasksAccomplished(UserTaskCollection tasks, Dictionary <object, object> context) { ExceptionHelper.FalseThrow <ArgumentNullException>(tasks != null, "tasks"); //需要删除的待办的ID InSqlClauseBuilder deleteTaskIDs = new InSqlClauseBuilder(); StringBuilder strB = new StringBuilder(); ORMappingItemCollection mapping = ORMapping.GetMappingInfo <UserTask>().Clone(); string userTaskTableName = mapping.TableName; mapping.TableName = "WF.USER_ACCOMPLISHED_TASK"; foreach (UserTask task in tasks) { UserTask clonedUserTask = GetClonedAccomplishedUserTask(task); if (strB.Length > 0) { strB.Append(TSqlBuilder.Instance.DBStatementSeperator); } WhereSqlClauseBuilder builder = GetDeleteAccomplishedUserTaskWhereBuilder(task); //删除已办 strB.AppendFormat("DELETE {0} WHERE {1}", mapping.TableName, builder.ToSqlString(TSqlBuilder.Instance)); strB.Append(TSqlBuilder.Instance.DBStatementSeperator); strB.Append(GetUserTaskInsertSql(clonedUserTask, mapping, "Category", "TopFlag")); strB.Append(TSqlBuilder.Instance.DBStatementSeperator); deleteTaskIDs.AppendItem(task.TaskID); } if (strB.Length > 0 && deleteTaskIDs.IsEmpty == false) { //删除待办 strB.AppendFormat("DELETE {0} WHERE TASK_GUID {1}", userTaskTableName, deleteTaskIDs.ToSqlStringWithInOperator(TSqlBuilder.Instance)); } if (strB.Length > 0) { DbHelper.RunSqlWithTransaction(strB.ToString(), GetConnectionName()); } }
private static void DefaultDataRowToObject <T, TCollection>(TCollection dataCollection, DataRow row) where T : new() where TCollection : EditableDataObjectCollectionBase <T>, new() { T data = new T(); ORMappingItemCollection mapping = ORMapping.GetMappingInfo <T>(); ORMapping.DataRowToObject(row, mapping, data); dataCollection.Add(data); }