/// <summary> /// 修改Acl成员项的状态 /// </summary> /// <param name="members"></param> /// <param name="status"></param> public void UpdateStatus(SCAclContainerOrMemberCollectionBase members, SchemaObjectStatus status) { members.NullCheck("members"); ORMappingItemCollection mappings = this.GetMappingInfo(); using (TransactionScope scope = TransactionScopeFactory.Create()) { foreach (SCAclItem aclItem in members) { aclItem.Status = status; string sql = VersionCommonObjectUpdateStatusSqlBuilder <SCAclItem> .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(); } }
private string GetUpdateSql(string containerID, SCAclContainerOrMemberCollectionBase members) { return(VersionStrategyUpdateSqlHelper.ConstructUpdateSql( null, (strB, context) => { string tableName = this.GetMappingInfo().TableName; 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}", tableName, "@currentTime", connectiveBuilder.ToSqlString(TSqlBuilder.Instance)); for (int i = 0; i < members.Count; i++) { SCAclItem aclitem = members[i]; aclitem.SortID = i; strB.Append(TSqlBuilder.Instance.DBStatementSeperator); aclitem.VersionEndTime = ConnectionDefine.MaxVersionEndTime; InsertSqlClauseBuilder insertBuilder = ORMapping.GetInsertSqlClauseBuilder(aclitem, this.GetMappingInfo(), "VersionStartTime"); insertBuilder.AppendItem("VersionStartTime", "@currentTime", "=", true); strB.AppendFormat("INSERT INTO {0}{1}", tableName, insertBuilder.ToSqlString(TSqlBuilder.Instance)); } })); }
private string GetUpdateSql(string containerID, SCAclContainerOrMemberCollectionBase 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++) { SCAclItem aclitem = members[i]; aclitem.SortID = i; strB.Append(TSqlBuilder.Instance.DBStatementSeperator); aclitem.VersionEndTime = ConnectionDefine.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)); } }); }
/// <summary> /// 修改Acl成员项的状态 /// </summary> /// <param name="members"></param> /// <param name="status"></param> public void UpdateStatus(SCAclContainerOrMemberCollectionBase members, SchemaObjectStatus status) { members.NullCheck("members"); ORMappingItemCollection mappings = this.GetMappingInfo(); using (TransactionScope scope = TransactionScopeFactory.Create()) { foreach (SCAclItem aclItem in members) { aclItem.Status = status; string sql = VersionCommonObjectUpdateStatusSqlBuilder<SCAclItem>.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(); } }