コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        /// <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);
        }
コード例 #5
0
        /// <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());
        }
コード例 #6
0
        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);
        }
コード例 #7
0
 /// <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);
 }
コード例 #8
0
        /// <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);
        }
コード例 #9
0
        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));
        }
コード例 #10
0
        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();
            }
        }
コード例 #11
0
 /// <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);
 }
コード例 #12
0
        /// <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();
                }
            });
        }
コード例 #13
0
        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);
        }
コード例 #14
0
        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());
        }
コード例 #15
0
ファイル: DataAdapter.cs プロジェクト: ounata/AK47-2016Source
        /// <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);
        }
コード例 #16
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));
        }
コード例 #17
0
        /// <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);
        }
コード例 #18
0
        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);
        }
コード例 #19
0
        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);
        }
コード例 #20
0
        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));
        }
コード例 #21
0
        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);
        }
コード例 #22
0
        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());
        }
コード例 #23
0
        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)));
        }
コード例 #24
0
        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);
        }
コード例 #25
0
        /// <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)));
        }
コード例 #26
0
        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);
        }
コード例 #27
0
        /// <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));
        }
コード例 #28
0
        /// <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));
        }
コード例 #29
0
        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());
            }
        }
コード例 #30
0
        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);
        }