Ejemplo n.º 1
0
        /// <summary>
        /// 修改Acl成员项的状态
        /// </summary>
        /// <param name="members"></param>
        /// <param name="status"></param>
        public void UpdateStatus(DEAclContainerOrMemberCollectionBase members, SchemaObjectStatus status)
        {
            members.NullCheck("members");

            ORMappingItemCollection mappings = this.GetMappingInfo();

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                foreach (DEAclItem aclItem in members)
                {
                    aclItem.Status = status;

                    string sql = VersionCommonObjectUpdateStatusSqlBuilder <DEAclItem> .Instance.ToUpdateSql(aclItem, mappings);

                    DateTime dt = (DateTime)DbHelper.RunSqlReturnScalar(sql, this.GetConnectionName());

                    //SCSnapshotBasicAdapter.Instance.UpdateCurrentSnapshot(mappings.TableName,
                    //    mappings.TableName + "_Current",
                    //    ORMapping.GetWhereSqlClauseBuilderByPrimaryKey(aclItem, mappings));

                    SCActionContext.Current.TimePoint.IsMinValue(() => SCActionContext.Current.TimePoint = dt);
                }

                scope.Complete();
            }
        }
Ejemplo n.º 2
0
        private string GetUpdateSql(string containerID, DEAclContainerOrMemberCollectionBase members)
        {
            return(VersionStrategyUpdateSqlHelper.ConstructUpdateSql(
                       null, (strB, context) =>
            {
                ConnectiveSqlClauseCollection connectiveBuilder = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder();

                WhereSqlClauseBuilder keyBuilder = new WhereSqlClauseBuilder();

                keyBuilder.AppendItem("ContainerID", containerID);

                connectiveBuilder.Add(keyBuilder);

                strB.AppendFormat(
                    "UPDATE {0} SET VersionEndTime = {1} WHERE {2}",
                    GetMappingInfo().TableName,
                    "@currentTime",
                    connectiveBuilder.ToSqlString(TSqlBuilder.Instance));

                for (int i = 0; i < members.Count; i++)
                {
                    DEAclItem aclitem = members[i];

                    aclitem.SortID = i;
                    strB.Append(TSqlBuilder.Instance.DBStatementSeperator);

                    aclitem.VersionEndTime = DBTimePointActionContext.MaxVersionEndTime;

                    InsertSqlClauseBuilder insertBuilder = ORMapping.GetInsertSqlClauseBuilder(aclitem, this.GetMappingInfo(), "VersionStartTime");

                    insertBuilder.AppendItem("VersionStartTime", "@currentTime", "=", true);

                    strB.AppendFormat("INSERT INTO {0}{1}", this.GetMappingInfo().TableName, insertBuilder.ToSqlString(TSqlBuilder.Instance));
                }
            }));
        }