/// <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());
        }
        private void GetAndSetUserName(InsertSqlClauseBuilder uIC, DataRow oRow)
        {
            string strObjName = (string)oRow[_DataColumns[ContainsValue(0, "OBJ_NAME")][2]];
            string strFirstName, strLastName;

            if (ContainsValue(0, "FIRST_NAME") >= 0)
            {
                strFirstName = (string)oRow[_DataColumns[ContainsValue(0, "FIRST_NAME")][2]];
            }
            else
            {
                if (strObjName.Length == 2)
                {
                    strFirstName = strObjName.Substring(1, 1);
                }
                else
                {
                    strFirstName = strObjName.Substring(strObjName.Length - 2, 2);
                }
            }
            uIC.AppendItem("FIRST_NAME", strFirstName);

            if (ContainsValue(0, "LAST_NAME") >= 0)
            {
                strLastName = (string)oRow[_DataColumns[ContainsValue(0, "LAST_NAME")][2]];
            }
            else
            {
                strLastName = strObjName.Substring(0, strObjName.LastIndexOf(strFirstName));
            }
            uIC.AppendItem("LAST_NAME", strLastName);
        }
Beispiel #3
0
        /// <summary>
        ///  创建现在SQL语句生成器
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="mapping"></param>
        /// <returns></returns>
        protected virtual InsertSqlClauseBuilder PrepareInsertSqlBuilder(DEEntityInstanceBase obj)
        {
            InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder();

            foreach (var filed in obj.Fields)
            {
                if (filed.Definition.IsInSnapshot)
                {
                    builder.AppendItem(filed.Definition.Name, filed.GetRealValue());
                }
            }
            if (!builder.ContainsDataField("ID"))
            {
                builder.AppendItem("ID", obj.ID);
            }
            if (!builder.ContainsDataField("CreateTime"))
            {
                builder.AppendItem("CreateTime", obj.CreateDate);
            }
            if (!builder.ContainsDataField("CreatorID"))
            {
                builder.AppendItem("CreatorID", obj.Creator.ID);
            }
            if (!builder.ContainsDataField("CreatorName"))
            {
                builder.AppendItem("CreatorName", obj.Creator.Name);
            }
            return(builder);
        }
Beispiel #4
0
        /// <summary>
        /// 生成查询SQL
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="mapping"></param>
        /// <returns></returns>
        public virtual string PrepareLoadSql(DEEntityInstanceBase obj)
        {
            InsertSqlClauseBuilder builder           = PrepareInsertSqlBuilder(obj);
            WhereSqlClauseBuilder  primaryKeyBuilder = PrepareWhereSqlBuilder(obj);

            return(string.Format("SELECT * FROM {0} WHERE {1}", GetTableName(obj), primaryKeyBuilder.ToSqlString(TSqlBuilder.Instance)));
        }
Beispiel #5
0
        private static string BuildRowsUsersSql(WfMatrixRowUsersCollection rowsUsers)
        {
            StringBuilder strB = new StringBuilder();

            foreach (WfMatrixRowUsers rowUsers in rowsUsers)
            {
                foreach (IUser user in rowUsers.Users)
                {
                    InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder();

                    builder.AppendItem("MATRIX_ID", rowUsers.Row.Matrix.MatrixID);
                    builder.AppendItem("MATRIX_ROW_ID", rowUsers.Row.RowNumber);
                    builder.AppendItem("USER_ID", user.ID);
                    builder.AppendItem("USER_NAME", user.DisplayName);
                    builder.AppendTenantCode();

                    if (strB.Length > 0)
                    {
                        strB.Append(TSqlBuilder.Instance.DBStatementSeperator);
                    }

                    strB.AppendFormat("INSERT INTO WF.MATRIX_ROWS_USERS {0}", builder.ToSqlString(TSqlBuilder.Instance));
                }
            }

            return(strB.ToString());
        }
Beispiel #6
0
        /// <summary>
        /// 取得填写日志的SQL语句
        /// </summary>
        /// <param name="userLogonName">用户登录名</param>
        /// <param name="winVer">windows版本</param>
        /// <param name="ieVer">IE版本</param>
        /// <param name="hostIP">客户端IP地址</param>
        /// <param name="hostName">客户端机器名</param>
        /// <param name="killInfo">杀毒软件</param>
        /// <param name="status">是否登陆成功</param>
        /// <param name="description">系统说明</param>
        /// <returns>INSERT INTO SYS_USER_LOGON + WHERE ......</returns>
        private static string GetInsertSysSql2(string userLogonName,
                                               string winVer,
                                               string ieVer,
                                               string hostIP,
                                               string hostName,
                                               string killInfo,
                                               string status,
                                               string description)
        {
            DataRow row = OGUReader.GetObjectsDetail("USERS",
                                                     userLogonName,
                                                     SearchObjectColumn.SEARCH_LOGON_NAME).Tables[0].Rows[0];

            string strUserDisplayname = (string)row["DISPLAY_NAME"];
            string strUserGuid        = (string)row["USER_GUID"];
            string strUserAllPathName = (string)row["ALL_PATH_NAME"];

            InsertSqlClauseBuilder ic = new InsertSqlClauseBuilder();

            ic.AppendItem("USER_GUID", strUserGuid);
            ic.AppendItem("USER_DISPLAYNAME", strUserDisplayname);
            ic.AppendItem("USER_DISTINCTNAME", strUserAllPathName);
            ic.AppendItem("USER_LOGONNAME", userLogonName);
            ic.AppendItem("HOST_IP", hostIP);
            ic.AppendItem("HOST_NAME", hostName);
            ic.AppendItem("WINDOWS_VERSION", winVer);
            ic.AppendItem("IE_VERSION", ieVer);
            ic.AppendItem("KILL_VIRUS", killInfo);
            ic.AppendItem("STATUS", status);
            ic.AppendItem("DESCRIPTION", description);

            return(" INSERT INTO SYS_USER_LOGON " + ic.ToSqlString(TSqlBuilder.Instance));
        }
        private void InsertOrgOrGroups(DataRow oRow, string strObjClass)
        {
            string  strParent, strSelfAllPathName, strRootGuid, strInnerSort;
            DataRow row = PrepareForInsert(oRow, out strParent, out strSelfAllPathName, out strRootGuid, out strInnerSort);

            string strGuid            = Guid.NewGuid().ToString();
            InsertSqlClauseBuilder ic = new InsertSqlClauseBuilder();

            ic.AppendItem("GUID", strGuid);
            ic.AppendItem("PARENT_GUID", strRootGuid);

            for (int i = 2; i < oRow.Table.Columns.Count; i++)
            {
                string strRealColumnName = _DataColumns[ContainsValue(2, oRow.Table.Columns[i].ColumnName)][0];
                if (strRealColumnName == "NAME" && strObjClass == "ORGANIZATIONS")
                {
                    ic.AppendItem("RANK_CODE", GetRankCode(strObjClass, (string)oRow[i]));
                }
                else
                {
                    if (strRealColumnName == "GUID" || strRealColumnName.IndexOf("GUID") >= 0)
                    {
                        continue;
                    }
                    else
                    {
                        if (CheckXsdExist(strRealColumnName, strObjClass))
                        {
                            ic.AppendItem(strRealColumnName, oRow[i]);
                        }
                    }
                }
            }

            if (ContainsValue(0, "NAME") < 0 && strObjClass == "ORGANIZATIONS")
            {
                ic.AppendItem("RANK_CODE", GetRankCode(strObjClass, string.Empty));
            }
            if (ContainsValue(0, "ALL_PATH_NAME") < 0)
            {
                ic.AppendItem("ALL_PATH_NAME", strSelfAllPathName);
            }

            ic.AppendItem("INNER_SORT", strInnerSort);
            ic.AppendItem("GLOBAL_SORT", OGUCommonDefine.DBValueToString(row["GLOBAL_SORT"]) + strInnerSort);
            ic.AppendItem("ORIGINAL_SORT", OGUCommonDefine.DBValueToString(row["ORIGINAL_SORT"]) + strInnerSort);
            ic.AppendItem("STATUS", "1");

            string strSql = "INSERT INTO " + strObjClass + ic.ToSqlString(TSqlBuilder.Instance) + ";\n";

            _StrBuild.Append(strSql);

            InnerCommon.ExecuteDataset(strSql);

            if (strObjClass == "ORGANIZATIONS")
            {
                _RootHash.Add(strSelfAllPathName, strGuid);
            }
        }
        private static string PrepareRowSql(string roleID, SOARolePropertyRow row)
        {
            InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(row);

            builder.AppendItem("ROLE_ID", roleID);

            return("INSERT INTO WF.ROLE_PROPERTIES_ROWS" + builder.ToSqlString(TSqlBuilder.Instance));
        }
Beispiel #9
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)));
        }
Beispiel #10
0
        protected override string GetInsertSql(WfProcessDescriptorDimension data, ORMappingItemCollection mappings, Dictionary <string, object> context)
        {
            InsertSqlClauseBuilder iBuilder = ORMapping.GetInsertSqlClauseBuilder(data, mappings);

            iBuilder.AppendTenantCode();

            return(string.Format("INSERT INTO {0} {1}", mappings.TableName, iBuilder.ToSqlString(TSqlBuilder.Instance)));
        }
Beispiel #11
0
        private static string GetUserTaskInsertSql(UserTask task, ORMappingItemCollection mapping, params string[] ignoreProperties)
        {
            InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(task, mapping, ignoreProperties);

            builder.AppendTenantCode();

            return(string.Format("INSERT INTO {0} {1}", mapping.TableName, builder.ToSqlString(TSqlBuilder.Instance)));
        }
Beispiel #12
0
        private static string GetInsertConditionCalculateResultSql(string ownerID, string objectID)
        {
            InsertSqlClauseBuilder insertBuilder = new InsertSqlClauseBuilder();

            insertBuilder.AppendItem("OwnerID", ownerID);
            insertBuilder.AppendItem("ObjectID", objectID);

            return(string.Format("INSERT INTO SC.ConditionCalculateResults{0}", insertBuilder.ToSqlString(TSqlBuilder.Instance)));
        }
Beispiel #13
0
        private static string PrepareInsertSql(UserAndContainerSnapshot obj, ORMappingItemCollection mapping)
        {
            InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(obj);

            builder.AppendItem("VersionStartTime", "@currentTime", "=", true);
            builder.AppendItem("VersionEndTime", SCConnectionDefine.MaxVersionEndTime);

            return(string.Format("INSERT INTO {0}{1}", mapping.TableName, builder.ToSqlString(TSqlBuilder.Instance)));
        }
Beispiel #14
0
        private static string PrepareUserInsert(string userID, string userName, string gender)
        {
            InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder();

            builder.AppendItem("UserID", userID);
            builder.AppendItem("UserName", userName);
            builder.AppendItem("Gender", gender);

            return(string.Format("INSERT INTO Users{0}", builder.ToSqlString(TSqlBuilder.Instance)));
        }
        private static string PrepareValueSql(string roleID, SOARolePropertyRow row, SOARolePropertyValue propValue)
        {
            InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(propValue);

            builder.AppendItem("ROLE_ID", roleID);
            builder.AppendItem("PROPERTIES_ROW_ID", row.RowNumber);
            builder.AppendItem("PROPERTY_NAME", propValue.Column.Name);

            return("INSERT INTO WF.ROLE_PROPERTIES_CELLS" + builder.ToSqlString(TSqlBuilder.Instance));
        }
        /// <summary>
        /// 根据对象拼Insert语句
        /// </summary>
        /// <typeparam name="T">对象类型</typeparam>
        /// <param name="graph">对象</param>
        /// <param name="mapping">映射关系</param>
        /// <param name="builder">生成Sql语句类型的Builder如TSqlBuilder或PlSqlBuilder</param>
        /// <param name="ignoreProperties">忽略的字段</param>
        /// <returns>根据传入的对象和对象映射时需要忽略的字段以及类定义上的表名,生成完整的Insert语句</returns>
        public static string GetInsertSql <T>(T graph, ORMappingItemCollection mapping, ISqlBuilder builder, params string[] ignoreProperties)
        {
            ExceptionHelper.FalseThrow <ArgumentNullException>(graph != null, "graph");
            ExceptionHelper.FalseThrow <ArgumentNullException>(mapping != null, "mapping");
            ExceptionHelper.FalseThrow <ArgumentNullException>(builder != null, "builder");

            InsertSqlClauseBuilder insertBuilder = GetInsertSqlClauseBuilder(graph, mapping, ignoreProperties);

            return(string.Format("INSERT INTO {0} {1}", mapping.TableName, insertBuilder.ToSqlString(builder)));
        }
        protected override string GetInsertSql(WfDelegation data, ORMappingItemCollection mappings, Dictionary <string, object> context, string[] ignoreProperties)
        {
            InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(data, mappings, "ApplicationName", "ProgramName");

            builder.AppendItem("APPLICATION_NAME", data.ApplicationName.IsNotEmpty() ? data.ApplicationName : string.Empty);
            builder.AppendItem("PROGRAM_NAME", data.ProgramName.IsNotEmpty() ? data.ProgramName : string.Empty);

            return(string.Format("INSERT INTO {0} {1}",
                                 mappings.TableName,
                                 builder.ToSqlString(TSqlBuilder.Instance)));
        }
Beispiel #18
0
        private static void WriteInsertAttachmentSql(TextWriter writer, EmailAttachment attachment, string messageID, int index)
        {
            InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(attachment);

            builder.AppendItem("MESSAGE_ID", messageID);
            builder.AppendItem("SORT_ID", index);

            string sql = string.Format("INSERT INTO MSG.EMAIL_ATTACHMENTS{0}",
                                       builder.ToSqlString(TSqlBuilder.Instance));

            writer.WriteLine(sql);
        }
Beispiel #19
0
        private static InsertSqlClauseBuilder GetInsertSqlClauseBuilder <T>(T graph, DataModel mapping, string[] ignorProperties)
        {
            ExceptionHelper.FalseThrow <ArgumentNullException>(graph != null, "graph");
            ExceptionHelper.FalseThrow <ArgumentNullException>(mapping != null, "mapping");

            InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder();

            FillSqlClauseBuilder(builder, graph, mapping, ClauseBindingFlags.Insert,
                                 new DoSqlClauseBuilder <T>(DoInsertUpdateSqlClauseBuilder <T>), ignorProperties);

            return(builder);
        }
Beispiel #20
0
        private void InsertAppType()
        {
            XmlNode xNode = _XmlRequest.DocumentElement.SelectSingleNode(".//SET");
            XmlNode root  = null;

            string insertSql = string.Empty;
            string strSql    = string.Empty;

            if (_XmlRequest.DocumentElement.SelectSingleNode("APP_OPERATION_TYPE") != null)
            {
                root      = _XmlRequest.DocumentElement.SelectSingleNode("APP_OPERATION_TYPE");
                insertSql = "INSERT APP_OPERATION_TYPE ";

                string appGuid    = ((XmlElement)root).GetAttribute("appGuid");
                string strOrgSort = ((XmlElement)root).GetAttribute("strSort");
                string typeGuid   = Guid.NewGuid().ToString();

                InsertSqlClauseBuilder ic = new InsertSqlClauseBuilder();
                ic.AppendItem <string>("GUID", typeGuid);
                ic.AppendItem <string>("APP_GUID", appGuid);
                ic.AppendItem <string>("DISPLAYNAME", xNode.SelectSingleNode("DISPLAYNAME").InnerText);
                ic.AppendItem <string>("CODE_NAME", xNode.SelectSingleNode("CODE_NAME").InnerText);
                ic.AppendItem <string>("DISCRIPTION", xNode.SelectSingleNode("DESCRIPTION").InnerText);
                ic.AppendItem <string>("VISIBLE", "y");
                ic.AppendItem <string>("CLASS", LogReader.GetNewClassValue(appGuid, strOrgSort));

                strSql = insertSql + ic.ToSqlString(TSqlBuilder.Instance);
                UserDataWrite.InsertUserLog("APP_LOG", "", "", "", "ADD_OP_TYPE", "向日志审计系统添加新的操作类型:"
                                            + xNode.SelectSingleNode("DISPLAYNAME").InnerText, _XmlRequest.DocumentElement.InnerXml, true);
            }
            else
            {
                root      = _XmlRequest.DocumentElement.SelectSingleNode("APP_LOG_TYPE");
                insertSql = "INSERT APP_LOG_TYPE ";

                string appGuid = Guid.NewGuid().ToString();

                InsertSqlClauseBuilder ic = new InsertSqlClauseBuilder();
                ic.AppendItem <string>("GUID", appGuid);
                ic.AppendItem <string>("CODE_NAME", xNode.SelectSingleNode("CODE_NAME").InnerText);
                ic.AppendItem <string>("DISPLAYNAME", xNode.SelectSingleNode("DISPLAYNAME").InnerText);
                ic.AppendItem <string>("VISIBLE", "y");
                ic.AppendItem <string>("DISCRIPTION", xNode.SelectSingleNode("DESCRIPTION").InnerText);
                ic.AppendItem <string>("CLASS", LogReader.GetClassForApp());

                strSql = insertSql + ic.ToSqlString(TSqlBuilder.Instance);
                UserDataWrite.InsertUserLog("APP_LOG", "ADD_APP_TYPE", "向日志审计系统添加新的应用:"
                                            + xNode.SelectSingleNode("DISPLAYNAME").InnerText, _XmlRequest.DocumentElement.InnerXml, true);
            }

            InnerCommon.ExecuteNonQuery(strSql);
        }
		private void InsertAppType()
		{
			XmlNode xNode = _XmlRequest.DocumentElement.SelectSingleNode(".//SET");
			XmlNode root = null;

			string insertSql = string.Empty;
			string strSql = string.Empty;
			if (_XmlRequest.DocumentElement.SelectSingleNode("APP_OPERATION_TYPE") != null)
			{
				root = _XmlRequest.DocumentElement.SelectSingleNode("APP_OPERATION_TYPE");
				insertSql = "INSERT APP_OPERATION_TYPE ";

				string appGuid = ((XmlElement)root).GetAttribute("appGuid");
				string strOrgSort = ((XmlElement)root).GetAttribute("strSort");
				string typeGuid = Guid.NewGuid().ToString();

				InsertSqlClauseBuilder ic = new InsertSqlClauseBuilder();
				ic.AppendItem<string>("GUID", typeGuid);
				ic.AppendItem<string>("APP_GUID", appGuid);
				ic.AppendItem<string>("DISPLAYNAME", xNode.SelectSingleNode("DISPLAYNAME").InnerText);
				ic.AppendItem<string>("CODE_NAME", xNode.SelectSingleNode("CODE_NAME").InnerText);
				ic.AppendItem<string>("DISCRIPTION", xNode.SelectSingleNode("DESCRIPTION").InnerText);
				ic.AppendItem<string>("VISIBLE", "y");
				ic.AppendItem<string>("CLASS", LogReader.GetNewClassValue(appGuid, strOrgSort));

				strSql = insertSql + ic.ToSqlString(TSqlBuilder.Instance);
				UserDataWrite.InsertUserLog("APP_LOG", "", "", "", "ADD_OP_TYPE", "向日志审计系统添加新的操作类型:"
					+ xNode.SelectSingleNode("DISPLAYNAME").InnerText, _XmlRequest.DocumentElement.InnerXml, true);
			}
			else
			{
				root = _XmlRequest.DocumentElement.SelectSingleNode("APP_LOG_TYPE");
				insertSql = "INSERT APP_LOG_TYPE ";

				string appGuid = Guid.NewGuid().ToString();

				InsertSqlClauseBuilder ic = new InsertSqlClauseBuilder();
				ic.AppendItem<string>("GUID", appGuid);
				ic.AppendItem<string>("CODE_NAME", xNode.SelectSingleNode("CODE_NAME").InnerText);
				ic.AppendItem<string>("DISPLAYNAME", xNode.SelectSingleNode("DISPLAYNAME").InnerText);
				ic.AppendItem<string>("VISIBLE", "y");
				ic.AppendItem<string>("DISCRIPTION", xNode.SelectSingleNode("DESCRIPTION").InnerText);
				ic.AppendItem<string>("CLASS", LogReader.GetClassForApp());

				strSql = insertSql + ic.ToSqlString(TSqlBuilder.Instance);
				UserDataWrite.InsertUserLog("APP_LOG", "ADD_APP_TYPE", "向日志审计系统添加新的应用:"
					+ xNode.SelectSingleNode("DISPLAYNAME").InnerText, _XmlRequest.DocumentElement.InnerXml, true);
			}

			InnerCommon.ExecuteNonQuery(strSql);
		}
        private void InnerInsertWithStream(MaterialContent data, Stream stream, Dictionary <string, object> context)
        {
            ORMappingItemCollection mappings = GetMappingInfo(context);

            InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(data, "ContentData");

            builder.AppendItem("CONTENT_DATA", stream);

            string sql = string.Format("INSERT INTO {0}{1} ",
                                       mappings.TableName,
                                       builder.ToSqlString(TSqlBuilder.Instance));

            DbHelper.RunSql(sql, GetConnectionName());
        }
Beispiel #23
0
        /// <summary>
        /// 颁发认证码
        /// </summary>
        /// <param name="authenticationType"></param>
        /// <param name="codeLength"></param>
        /// <returns></returns>
        public AuthenticationCode IssueCode(string authenticationType, int codeLength)
        {
            AuthenticationCode result = AuthenticationCode.Create(authenticationType, codeLength);

            InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(result);

            builder.AppendItem("EXPIRE_TIME", string.Format("DATEADD(second, {0}, GETDATE())", 1800), "=", true);

            string sql = string.Format("INSERT INTO {0} {1}", this.GetMappingInfo().TableName, builder.ToSqlString(TSqlBuilder.Instance));

            ExecuteNonQuery(sql);

            return(result);
        }
Beispiel #24
0
        protected override void InnerInsert(InvokeWebServiceJob data, Dictionary <string, object> context, string[] ignoreProperties)
        {
            InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder();

            FillSqlBuilder(builder, data);

            string sql = string.Format("INSERT INTO {0} {1}",
                                       GetMappingInfo(context).TableName,
                                       builder.ToSqlString(TSqlBuilder.Instance));

            DbHelper.RunSql(sql, GetConnectionName());

            JobBaseAdapter.Instance.Update(data);
        }
        /// <summary>
        /// 根据对象拼Insert语句时的方法
        /// </summary>
        /// <typeparam name="T">对象类型</typeparam>
        /// <param name="graph">对象</param>
        /// <param name="mapping">映射关系</param>
        /// <param name="ignoreProperties">忽略的字段</param>
        /// <returns>InsertSqlClauseBuilder对象,供拼Insert语句使用</returns>
        /// <remarks>
        /// 根据传入的对象和对象映射时需要忽略的字段,返回InsertSqlClauseBuilder对象,以供后续拼Insert语句的字段名称和Values部分
        /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Data.SqlBuilder.Test\ORMappingTest.cs" region="GetInsertSqlClauseBuilder" lang="cs" title="拼Insert语句"/>
        /// <see cref="MCS.Library.Data.Builder.InsertSqlClauseBuilder"/>
        /// </remarks>
        public static InsertSqlClauseBuilder GetInsertSqlClauseBuilder <T>(T graph, ORMappingItemCollection mapping, params string[] ignoreProperties)
        {
            ExceptionHelper.FalseThrow <ArgumentNullException>(graph != null, "graph");
            ExceptionHelper.FalseThrow <ArgumentNullException>(mapping != null, "mapping");

            InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder();

            FillSqlClauseBuilder(builder, graph, mapping, ClauseBindingFlags.Insert,
                                 new DoSqlClauseBuilder <T>(DoInsertUpdateSqlClauseBuilder <T>), ignoreProperties);

            builder.AppendTenantCode(typeof(T));

            return(builder);
        }
		public static void SyncGroupMembers(string sourceDN, string destinationPath, ServerInfo serverInfo)
		{
			serverInfo.NullCheck("serverInfo");

			ADHelper helper = ADHelper.GetInstance(serverInfo);

			helper.EntryExists(sourceDN).FalseThrow("{0}在域中不存在");
			DataRow groupRow = FindGroup(destinationPath);

			(groupRow != null).FalseThrow("{0}在机构人员管理系统中不存在", destinationPath);

			StringBuilder strB = new StringBuilder(256);

			string groupID = groupRow["GUID"].ToString();

			strB.AppendFormat("DELETE GROUP_USERS WHERE GROUP_GUID = {0}", TSqlBuilder.Instance.CheckUnicodeQuotationMark(groupID));

			int index = 0;

			using (DirectoryEntry groupEntry = helper.NewEntry(sourceDN))
			{
				IEnumerable<DataRow> rows = CollectGroupUserRows(groupEntry);

				foreach (DataRow row in rows)
				{
					strB.Append(TSqlBuilder.Instance.DBStatementSeperator);

					InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder();

					builder.AppendItem("GROUP_GUID", groupID);
					builder.AppendItem("USER_GUID", row["USER_GUID"].ToString());
					builder.AppendItem("USER_PARENT_GUID", row["PARENT_GUID"].ToString());
					builder.AppendItem("INNER_SORT", string.Format("{0:000000}", index));
					builder.AppendItem("CREATE_TIME", "GETDATE()", "=", true);
					builder.AppendItem("MODIFY_TIME", "GETDATE()", "=", true);

					strB.AppendFormat("INSERT INTO GROUP_USERS{0}", builder.ToSqlString(TSqlBuilder.Instance));

					index++;
				}
			}

			using (TransactionScope scope = TransactionScopeFactory.Create())
			{
				DbHelper.ExecSql(db => db.ExecuteNonQuery(CommandType.Text, strB.ToString()));

				scope.Complete();
			}
		}
Beispiel #27
0
        public static void SyncGroupMembers(string sourceDN, string destinationPath, ServerInfo serverInfo)
        {
            serverInfo.NullCheck("serverInfo");

            ADHelper helper = ADHelper.GetInstance(serverInfo);

            helper.EntryExists(sourceDN).FalseThrow("{0}在域中不存在");
            DataRow groupRow = FindGroup(destinationPath);

            (groupRow != null).FalseThrow("{0}在机构人员管理系统中不存在", destinationPath);

            StringBuilder strB = new StringBuilder(256);

            string groupID = groupRow["GUID"].ToString();

            strB.AppendFormat("DELETE GROUP_USERS WHERE GROUP_GUID = {0}", TSqlBuilder.Instance.CheckUnicodeQuotationMark(groupID));

            int index = 0;

            using (DirectoryEntry groupEntry = helper.NewEntry(sourceDN))
            {
                IEnumerable <DataRow> rows = CollectGroupUserRows(groupEntry);

                foreach (DataRow row in rows)
                {
                    strB.Append(TSqlBuilder.Instance.DBStatementSeperator);

                    InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder();

                    builder.AppendItem("GROUP_GUID", groupID);
                    builder.AppendItem("USER_GUID", row["USER_GUID"].ToString());
                    builder.AppendItem("USER_PARENT_GUID", row["PARENT_GUID"].ToString());
                    builder.AppendItem("INNER_SORT", string.Format("{0:000000}", index));
                    builder.AppendItem("CREATE_TIME", "GETDATE()", "=", true);
                    builder.AppendItem("MODIFY_TIME", "GETDATE()", "=", true);

                    strB.AppendFormat("INSERT INTO GROUP_USERS{0}", builder.ToSqlString(TSqlBuilder.Instance));

                    index++;
                }
            }

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                DbHelper.ExecSql(db => db.ExecuteNonQuery(CommandType.Text, strB.ToString()));

                scope.Complete();
            }
        }
Beispiel #28
0
        protected virtual InsertSqlClauseBuilder PrepareInsertSqlBuilder(T obj, ORMappingItemCollection mapping)
        {
            InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(obj, mapping);

            //string vsFieldName = GetPropertyFieldName("VersionStartTime", mapping);
            //string veFieldName = GetPropertyFieldName("VersionEndTime", mapping);

            //builder.Remove(b => ((SqlClauseBuilderItemIUW)b).DataField == vsFieldName);
            //builder.Remove(b => ((SqlClauseBuilderItemIUW)b).DataField == veFieldName);

            //builder.AppendItem(vsFieldName, "@currentTime", "=", true);
            //builder.AppendItem(veFieldName, ConnectionDefine.MaxVersionEndTime);

            return(builder);
        }
        protected override string GetInsertSql(TxProcess data, ORMappingItemCollection mappings, Dictionary <string, object> context, string[] ignoreProperties)
        {
            InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(data, mappings, ignoreProperties);

            string serilizedProcess = context.GetValue("SerilizedProcess", string.Empty);

            if (serilizedProcess.IsNullOrEmpty())
            {
                serilizedProcess = GetSerilizedProcess(data);
            }

            builder.AppendItem("DATA", serilizedProcess);

            return(string.Format("INSERT INTO {0} {1}", this.GetTableName(), builder.ToSqlString(TSqlBuilder.Instance)));
        }
        /// <summary>
        /// 更新给定的数据实体集合
        /// </summary>
        /// <param name="whereAction">where委托,用来限定需要设置VersionEndTime的数据</param>
        /// <param name="data">数据实体集合,用来新增的数据集合</param>
        /// <param name="versionTime">版本时间</param>
        /// <returns>更新数据使用时间</returns>
        public DateTime UpdateCurrentData(Action <WhereSqlClauseBuilder> whereAction, TCollection data, DateTime versionTime)
        {
            StringBuilder strB = new StringBuilder();

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            if (whereAction != null)
            {
                whereAction(builder);
            }
            builder.AppendItem("VersionEndTime", DBNull.Value, "IS");

            if (versionTime != DateTime.MinValue)
            {
                strB.AppendFormat(@"DECLARE @CURRENTTIME DATETIME
                                                SET @CURRENTTIME = {0}
                                                UPDATE {1}  SET VersionEndTime =  @CURRENTTIME WHERE {2}",
                                  TSqlBuilder.Instance.FormatDateTime(versionTime),
                                  GetMappingInfo(new Dictionary <string, object>()).TableName,
                                  builder.ToSqlString(TSqlBuilder.Instance));
            }
            else
            {
                strB.AppendFormat(@"DECLARE @CURRENTTIME DATETIME
                                                SET @CURRENTTIME =GETDATE()
                                                UPDATE {0}  SET VersionEndTime =  @CURRENTTIME WHERE {1}",
                                  GetMappingInfo(new Dictionary <string, object>()).TableName,
                                  builder.ToSqlString(TSqlBuilder.Instance));
            }

            ORMappingItemCollection mappings = GetMappingInfo(new Dictionary <string, object>());

            foreach (var item in data)
            {
                strB.Append(TSqlBuilder.Instance.DBStatementSeperator);
                InsertSqlClauseBuilder insertBuilder = ORMapping.GetInsertSqlClauseBuilder(item, mappings, "VersionStartTime");
                insertBuilder.AppendItem("VersionStartTime", "@CURRENTTIME", null, true);

                strB.Append(string.Format(" INSERT INTO {0} {1};", mappings.TableName,
                                          insertBuilder.ToSqlString(TSqlBuilder.Instance))
                            );
            }

            strB.Append(TSqlBuilder.Instance.DBStatementSeperator);
            strB.Append("SELECT @CURRENTTIME");

            return((DateTime)DbHelper.RunSqlReturnScalar(strB.ToString(), GetConnectionName()));
        }
Beispiel #31
0
        private static void WriteInsertAddressSql(TextWriter writer, EmailAddress address, string messageID, string className, int index)
        {
            if (address != null)
            {
                InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(address);

                builder.AppendItem("MESSAGE_ID", messageID);
                builder.AppendItem("SORT_ID", index);
                builder.AppendItem("CLASS", className);

                string sql = string.Format("INSERT INTO MSG.EMAIL_ADDRESSES{0}",
                                           builder.ToSqlString(TSqlBuilder.Instance));

                writer.WriteLine(sql);
            }
        }
Beispiel #32
0
        /// <summary>
        /// 得到更新当前快照的SQL
        /// </summary>
        /// <param name="srcTableName"></param>
        /// <param name="targetTableName"></param>
        /// <param name="builder"></param>
        /// <returns></returns>
        private string GetInternalUpdateCurrentSnapshotSql(string srcTableName, string targetTableName, IConnectiveSqlClause builder)
        {
            builder.NullCheck("builder");

            StringBuilder strB = new StringBuilder();

            if (builder.IsEmpty == false)
            {
                IConnectiveSqlClause timePointBuilder = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder(DateTime.MinValue);

                ConnectiveSqlClauseCollection connectiveBuilder = new ConnectiveSqlClauseCollection(builder, timePointBuilder);

                string sql = string.Format("SELECT * FROM {0} WHERE Status = {1} AND {2}",
                                           srcTableName,
                                           (int)SchemaObjectStatus.Normal,
                                           connectiveBuilder.ToSqlString(TSqlBuilder.Instance));

                DataTable table = DbHelper.RunSqlReturnDS(sql, this.GetConnectionName()).Tables[0];

                if (table.Rows.Count > 0)
                {
                    UpdateSqlClauseBuilder updateBuilder = new UpdateSqlClauseBuilder();
                    DataRowToBuilder(table.Rows[0], updateBuilder, "RowUniqueID");

                    InsertSqlClauseBuilder insertBuilder = new InsertSqlClauseBuilder();
                    DataRowToBuilder(table.Rows[0], insertBuilder);

                    strB.AppendFormat("UPDATE {0} SET {1} WHERE {2}",
                                      targetTableName,
                                      updateBuilder.ToSqlString(TSqlBuilder.Instance),
                                      builder.ToSqlString(TSqlBuilder.Instance));

                    strB.Append(TSqlBuilder.Instance.DBStatementSeperator);
                    strB.Append("IF @@ROWCOUNT = 0");
                    strB.Append(TSqlBuilder.Instance.DBStatementSeperator);
                    strB.AppendFormat("INSERT INTO {0} {1}",
                                      targetTableName,
                                      insertBuilder.ToSqlString(TSqlBuilder.Instance));
                }
                else
                {
                    strB.AppendFormat("DELETE {0} WHERE {1}", targetTableName, builder.ToSqlString(TSqlBuilder.Instance));
                }
            }

            return(strB.ToString());
        }
		private static string SaveStateToDB(string state)
		{
			InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder();

			builder.AppendItem("DATA", state);

			StringBuilder strB = new StringBuilder(5120);

			strB.Append("INSERT INTO PAGE_VIEW_STATE ");
			strB.Append(builder.ToSqlString(TSqlBuilder.Instance));
			strB.Append("\nSELECT SCOPE_IDENTITY()");

			using (DbContext context = DbContext.GetContext(ConnectionName))
			{
				Database db = DatabaseFactory.Create(context);

				Decimal result = (Decimal)db.ExecuteScalar(CommandType.Text, strB.ToString());

				return result.ToString();
			}
		}
Beispiel #34
0
		/// <summary>
		/// 取得填写日志的SQL语句
		/// </summary>
		/// <param name="killInfo">杀毒软件</param>
		/// <param name="status">是否登陆成功</param>
		/// <param name="description">系统说明</param>
		/// <returns></returns>
		private static string GetInsertSysSql(string killInfo, string status, string description)
		{
			string systemInfo = string.Empty;
			string winVer = string.Empty;
			string ieVer = string.Empty;

			if (GlobalInfo.HttpEnvironment != null)
			{
				systemInfo = GlobalInfo.HttpEnvironment.UserAgent;
			}
			char[] split = new char[1];
			split[0] = ';';
			if ((systemInfo != null) && (systemInfo.Length != 0))
			{
				string[] inforArr = systemInfo.Split(split, 3);
				winVer = inforArr[2];
				ieVer = inforArr[1];
			}

			string hostIP = GlobalInfo.HttpEnvironment.UserHostAddress;
			string hostName = GlobalInfo.HttpEnvironment.UserHostName;

			string userDisplayname = GlobalInfo.UserLogOnInfo.OuUsers[0].UserDisplayName;
			string userGuid = GlobalInfo.UserLogOnInfo.UserGuid;
			string userDistinctName = GlobalInfo.UserLogOnInfo.OuUsers[0].AllPathName;
			string userLogonName = GlobalInfo.UserLogOnInfo.UserLogOnName;

			InsertSqlClauseBuilder ic = new InsertSqlClauseBuilder();
			ic.AppendItem("USER_GUID", userGuid);
			ic.AppendItem("USER_DISPLAYNAME", userDisplayname);
			ic.AppendItem("USER_DISTINCTNAME", userDistinctName);
			ic.AppendItem("USER_LOGONNAME", userLogonName);
			ic.AppendItem("HOST_IP", hostIP);
			ic.AppendItem("HOST_NAME", hostName);
			ic.AppendItem("WINDOWS_VERSION", winVer);
			ic.AppendItem("IE_VERSION", ieVer);
			ic.AppendItem("KILL_VIRUS", killInfo);
			ic.AppendItem("STATUS", status);
			ic.AppendItem("DESCRIPTION", description);

			return " INSERT INTO SYS_USER_LOGON " + ic.ToSqlString(TSqlBuilder.Instance);
		}
Beispiel #35
0
		/// <summary>
		/// 取得填写日志的SQL语句
		/// </summary>
		/// <param name="userLogonName">用户登录名</param>
		/// <param name="winVer">windows版本</param>
		/// <param name="ieVer">IE版本</param>
		/// <param name="hostIP">客户端IP地址</param>
		/// <param name="hostName">客户端机器名</param>
		/// <param name="killInfo">杀毒软件</param>
		/// <param name="status">是否登陆成功</param>
		/// <param name="description">系统说明</param>
		/// <returns>INSERT INTO SYS_USER_LOGON + WHERE ......</returns>
		private static string GetInsertSysSql2(string userLogonName, 
			string winVer, 
			string ieVer, 
			string hostIP,
			string hostName, 
			string killInfo, 
			string status, 
			string description)
		{
			DataRow row = OGUReader.GetObjectsDetail("USERS", 
				userLogonName, 
				SearchObjectColumn.SEARCH_LOGON_NAME).Tables[0].Rows[0];

			string strUserDisplayname = (string)row["DISPLAY_NAME"];
			string strUserGuid = (string)row["USER_GUID"];
			string strUserAllPathName = (string)row["ALL_PATH_NAME"];

			InsertSqlClauseBuilder ic = new InsertSqlClauseBuilder();
			ic.AppendItem("USER_GUID", strUserGuid);
			ic.AppendItem("USER_DISPLAYNAME", strUserDisplayname);
			ic.AppendItem("USER_DISTINCTNAME", strUserAllPathName);
			ic.AppendItem("USER_LOGONNAME", userLogonName);
			ic.AppendItem("HOST_IP", hostIP);
			ic.AppendItem("HOST_NAME", hostName);
			ic.AppendItem("WINDOWS_VERSION", winVer);
			ic.AppendItem("IE_VERSION", ieVer);
			ic.AppendItem("KILL_VIRUS", killInfo);
			ic.AppendItem("STATUS", status);
			ic.AppendItem("DESCRIPTION", description);

			return " INSERT INTO SYS_USER_LOGON " + ic.ToSqlString(TSqlBuilder.Instance);
		}
Beispiel #36
0
        private static void PrepareSetUserSideline(XmlDocument xmlDoc, XmlDocument orgUserXsd, Dictionary<object, object> context)
        {
            XmlElement root = xmlDoc.DocumentElement;
            XmlNode nodeSet = xmlDoc.DocumentElement.SelectSingleNode(".//SET");
            CheckAllPathNameInSystem(nodeSet.SelectSingleNode(".//ALL_PATH_NAME").InnerText);
            InsertSqlClauseBuilder ic = new InsertSqlClauseBuilder();
            foreach (XmlElement elem in nodeSet.ChildNodes)
            {
                if (InnerCommon.GetXSDColumnNode(orgUserXsd, elem.LocalName) != null)
                    ic.AppendItem(elem.LocalName, elem.InnerText);
            }
         
            ic.AppendItem("INNER_SORT", "@U_INNER_SORT", "other", true);
            ic.AppendItem("ORIGINAL_SORT", "@O_ORIGINAL_SORT + @U_INNER_SORT", "other", true);
            ic.AppendItem("GLOBAL_SORT", "@O_GLOBAL_SORT + @U_INNER_SORT", "other", true);
            ic.AppendItem("MODIFY_TIME", "GETDATE()", "other", true);
            ic.AppendItem("STATUS", "1");

            string strSql = @"
				DECLARE @U_INNER_SORT NVARCHAR(6);
				DECLARE @O_ORIGINAL_SORT NVARCHAR(255);
				DECLARE @O_GLOBAL_SORT NVARCHAR(255);

				UPDATE ORGANIZATIONS
					SET CHILDREN_COUNTER = CHILDREN_COUNTER + 1, 
						MODIFY_TIME = GETDATE(), 
						@U_INNER_SORT = REPLACE(STR(CHILDREN_COUNTER + 1, 6), ' ', '0'),
						@O_ORIGINAL_SORT = ORIGINAL_SORT,
						@O_GLOBAL_SORT = GLOBAL_SORT
				WHERE GUID = {0};
				
				INSERT INTO OU_USERS " + ic.ToSqlString(TSqlBuilder.Instance);

            strSql = string.Format(strSql, TSqlBuilder.Instance.CheckQuotationMark(nodeSet.SelectSingleNode("PARENT_GUID").InnerText, true));

            context.Add("Sql", strSql);
           // InnerCommon.ExecuteNonQuery(strSql);
        }
		/// <summary>
		/// 
		/// </summary>
		/// <param name="userLogonName"></param>
		/// <param name="strAppName"></param>
		/// <param name="strHostIP"></param>
		/// <param name="strHostName"></param>
		/// <param name="strUrl"></param>
		/// <param name="strGoalID"></param>
		/// <param name="strGoalName"></param>
		/// <param name="strGoalDisplayName"></param>
		/// <param name="strOpType"></param>
		/// <param name="strExplain"></param>
		/// <param name="strOriginalData"></param>
		/// <param name="bOpSucceed"></param>
		/// <returns></returns>
		private static string GetInsertUserSql2(string userLogonName,
			string strAppName, 
			string strHostIP, 
			string strHostName, 
			string strUrl, 
			string strGoalID, 
			string strGoalName, 
			string strGoalDisplayName, 
			string strOpType, 
			string strExplain, 
			string strOriginalData, 
			bool bOpSucceed)
		{
			DataRow row = OGUReader.GetObjectsDetail("USERS", 
				userLogonName, 
				SearchObjectColumn.SEARCH_LOGON_NAME).Tables[0].Rows[0];

			string strUserDisplayname = (string)row["DISPLAY_NAME"];
			string strUserGuid = (string)row["USER_GUID"];
			string strUserAllPathName = (string)row["ALL_PATH_NAME"];

			InsertSqlClauseBuilder ic = new InsertSqlClauseBuilder();
			ic.AppendItem("OP_USER_DISPLAYNAME", strUserDisplayname);
			ic.AppendItem("OP_USER_GUID", strUserGuid);
			ic.AppendItem("OP_USER_DISTINCTNAME", strUserAllPathName);
			ic.AppendItem("OP_USER_LOGONNAME", userLogonName);
			ic.AppendItem("HOST_IP", strHostIP);
			ic.AppendItem("HOST_NAME", strHostName);
			ic.AppendItem("APP_GUID", GetGuidByType(strAppName, "", "CODE_NAME"));
			//ic.AppendItem("APP_GUID", strAppName);
			ic.AppendItem("OP_URL", strUrl);
			ic.AppendItem("GOAL_ID", strGoalID);
			ic.AppendItem("GOAL_NAME", strGoalName);
			ic.AppendItem("GOAL_DISNAME", strGoalDisplayName);
			ic.AppendItem("OP_GUID", GetGuidByType(strAppName, strOpType, "CODE_NAME"));
			//ic.AppendItem("OP_GUID", strAppName);
			ic.AppendItem("GOAL_EXPLAIN", strExplain);
			ic.AppendItem("ORIGINAL_DATA", strOriginalData);
			ic.AppendItem("LOG_SUCCED", bOpSucceed ? "y" : "n");

			return " INSERT INTO USER_OPEATION_LOG " + ic.ToSqlString(TSqlBuilder.Instance);
		}
		public void AddOperationByUsers()
		{
			DataView users_add = new DataView(this.Context.OriginalData.Tables["USERS"], string.Empty, "GUID", DataViewRowState.Added);

			Database db = DatabaseFactory.Create(this.Context.InitialParams.UserInfoExtend);
			foreach (DataRowView dr in users_add)
			{
				int index = this.Context.ADUserExtendGuidView.Find(dr["GUID"]);
				DataRowView drv = this.Context.ADUserExtendGuidView[index];

				InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder();

				builder.AppendItem("ID", drv["ID"].ToString());
				builder.AppendItem("MOBILE", drv["MOBILE"].ToString());
				builder.AppendItem("OFFICE_TEL", drv["OFFICE_TEL"].ToString());
				builder.AppendItem("GENDER", drv["GENDER"].ToString());
				builder.AppendItem("NATION", drv["NATION"].ToString());
				builder.AppendItem("IM_ADDRESS", drv["IM_ADDRESS"].ToString());

				string sql = string.Format("INSERT INTO USERS_INFO_EXTEND {0}", builder.ToSqlString(TSqlBuilder.Instance));
				try
				{
					int count = db.ExecuteNonQuery(CommandType.Text, sql);

					if (count == 1)
					{
						this.AddCount++;
						//this.Context.InitialParams.Log.Write(string.Format("USERS_INFO_EXTEND表ID是{0}的记录添加成功",
						//dr["GUID"].ToString()));
					}
				}
				catch (Exception ex)
				{
					this.Context.InitialParams.Log.Write(string.Format("USERS_INFO_EXTEND表 ID 是{0}的执行插入时出错,错误是{1}",
						drv["ID"].ToString(), ex.Message));
				}
			}
		}
		private void InsertOrgOrGroups(DataRow oRow, string strObjClass)
		{
			string strParent, strSelfAllPathName, strRootGuid, strInnerSort;
			DataRow row = PrepareForInsert(oRow, out strParent, out strSelfAllPathName, out strRootGuid, out strInnerSort);

			string strGuid = Guid.NewGuid().ToString();
			InsertSqlClauseBuilder ic = new InsertSqlClauseBuilder();
			ic.AppendItem("GUID", strGuid);
			ic.AppendItem("PARENT_GUID", strRootGuid);

			for (int i = 2; i < oRow.Table.Columns.Count; i++)
			{
				string strRealColumnName = _DataColumns[ContainsValue(2, oRow.Table.Columns[i].ColumnName)][0];
				if (strRealColumnName == "NAME" && strObjClass == "ORGANIZATIONS")
					ic.AppendItem("RANK_CODE", GetRankCode(strObjClass, (string)oRow[i]));
				else
				{
					if (strRealColumnName == "GUID" || strRealColumnName.IndexOf("GUID") >= 0)
						continue;
					else
					{
						if (CheckXsdExist(strRealColumnName, strObjClass))
							ic.AppendItem(strRealColumnName, oRow[i]);
					}
				}
			}

			if (ContainsValue(0, "NAME") < 0 && strObjClass == "ORGANIZATIONS")
				ic.AppendItem("RANK_CODE", GetRankCode(strObjClass, string.Empty));
			if (ContainsValue(0, "ALL_PATH_NAME") < 0)
				ic.AppendItem("ALL_PATH_NAME", strSelfAllPathName);

			ic.AppendItem("INNER_SORT", strInnerSort);
			ic.AppendItem("GLOBAL_SORT", OGUCommonDefine.DBValueToString(row["GLOBAL_SORT"]) + strInnerSort);
			ic.AppendItem("ORIGINAL_SORT", OGUCommonDefine.DBValueToString(row["ORIGINAL_SORT"]) + strInnerSort);
			ic.AppendItem("STATUS", "1");

			string strSql = "INSERT INTO " + strObjClass + ic.ToSqlString(TSqlBuilder.Instance) + ";\n";

			_StrBuild.Append(strSql);

			InnerCommon.ExecuteDataset(strSql);

			if (strObjClass == "ORGANIZATIONS")
				_RootHash.Add(strSelfAllPathName, strGuid);
		}
		public override void AddOperation()
		{
			//添加用户表
			DataView users = new DataView(this.Context.OriginalData.Tables["USERS"], string.Empty, "GUID", DataViewRowState.Added);
			Database db = DatabaseFactory.Create(this.Context.InitialParams.AccreditAdminConnectionName);
			foreach (DataRowView drs in users)
			{
				InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder();

				builder.AppendItem("GUID", drs["GUID"].ToString());
				builder.AppendItem("FIRST_NAME", drs["FIRST_NAME"].ToString());
				builder.AppendItem("LAST_NAME", drs["LAST_NAME"].ToString());
				builder.AppendItem("LOGON_NAME", drs["LOGON_NAME"].ToString());

				builder.AppendItem("PWD_TYPE_GUID", drs["PWD_TYPE_GUID"].ToString());
				builder.AppendItem("USER_PWD", drs["USER_PWD"].ToString());

				builder.AppendItem("RANK_CODE", drs["RANK_CODE"].ToString());
				builder.AppendItem("POSTURAL", drs["POSTURAL"].ToString());
				builder.AppendItem("PINYIN", drs["PINYIN"].ToString());
				builder.AppendItem("E_MAIL", drs["E_MAIL"].ToString());

				string sql = string.Format("INSERT INTO USERS {0}", builder.ToSqlString(TSqlBuilder.Instance));

				try
				{
					int count = db.ExecuteNonQuery(CommandType.Text, sql);

					if (count == 1)
					{
						this.AddCount++;
						//this.Context.InitialParams.Log.Write(string.Format("USERS表GUID是{0}的记录添加成功",
						//   drs["GUID"].ToString()));
					}
				}
				catch (Exception ex)
				{
					this.Context.InitialParams.Log.Write(string.Format("USERS表GUID 是{0},LogonName是{1}的记录执行插入时出错,错误是{2}",
						drs["GUID"].ToString(), drs["LOGON_NAME"].ToString(), ex.Message));
				}

			}
		}
		public override void AddOperation()
		{
			//添加用户表
			DataView ouusers = new DataView(this.Context.OriginalData.Tables["OU_USERS"], string.Empty, "PARENT_GUID,USER_GUID", DataViewRowState.Added);
			Database db = DatabaseFactory.Create(this.Context.InitialParams.AccreditAdminConnectionName);

			foreach (DataRowView dr in ouusers)
			{
				InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder();

				builder.AppendItem("USER_GUID", dr["USER_GUID"].ToString());
				builder.AppendItem("PARENT_GUID", dr["PARENT_GUID"].ToString());
				builder.AppendItem("ALL_PATH_NAME", dr["ALL_PATH_NAME"].ToString());
				builder.AppendItem("DISPLAY_NAME", dr["DISPLAY_NAME"].ToString());

				builder.AppendItem("OBJ_NAME", dr["OBJ_NAME"].ToString());
				builder.AppendItem("STATUS", dr["STATUS"].ToString());
				builder.AppendItem("ORIGINAL_SORT", dr["ORIGINAL_SORT"].ToString());
				builder.AppendItem("GLOBAL_SORT", dr["GLOBAL_SORT"].ToString());
				builder.AppendItem("RANK_NAME", dr["RANK_NAME"].ToString());
				builder.AppendItem("DESCRIPTION", dr["DESCRIPTION"].ToString());
				builder.AppendItem("ATTRIBUTES", Convert.ToInt32(dr["ATTRIBUTES"]));
				builder.AppendItem("SEARCH_NAME", dr["SEARCH_NAME"]);

				string sql = string.Format("INSERT INTO OU_USERS {0}", builder.ToSqlString(TSqlBuilder.Instance));
				try
				{
					int count = db.ExecuteNonQuery(CommandType.Text, sql);

					if (count == 1)
					{
						this.AddCount++;
						//this.Context.InitialParams.Log.Write(string.Format("OU_USERS表 PARENT_GUID是{0},USER_GUID是{1}的记录添加成功,ALL_PATH_NAME是'{2}'",
						//dr["PARENT_GUID"].ToString(), dr["USER_GUID"].ToString(), dr["ALL_PATH_NAME"]).ToString());
					}
				}
				catch (Exception ex)
				{
					this.Context.InitialParams.Log.Write(string.Format("OU_USERS表 PARENT_GUID是{0},USER_GUID 是{1}的记录执行插入时出错,错误是{2}",
						dr["PARENT_GUID"].ToString(), dr["USER_GUID"].ToString(), ex.Message));
				}
			}
		}
		private void GetAndSetUserName(InsertSqlClauseBuilder uIC, DataRow oRow)
		{
			string strObjName = (string)oRow[_DataColumns[ContainsValue(0, "OBJ_NAME")][2]];
			string strFirstName, strLastName;

			if (ContainsValue(0, "FIRST_NAME") >= 0)
				strFirstName = (string)oRow[_DataColumns[ContainsValue(0, "FIRST_NAME")][2]];
			else
			{
				if (strObjName.Length == 2)
					strFirstName = strObjName.Substring(1, 1);
				else
					strFirstName = strObjName.Substring(strObjName.Length - 2, 2);
			}
			uIC.AppendItem("FIRST_NAME", strFirstName);

			if (ContainsValue(0, "LAST_NAME") >= 0)
				strLastName = (string)oRow[_DataColumns[ContainsValue(0, "LAST_NAME")][2]];
			else
				strLastName = strObjName.Substring(0, strObjName.LastIndexOf(strFirstName));
			uIC.AppendItem("LAST_NAME", strLastName);
		}
        private void PrepareRoleContainers(string roleID, SOARolePropertyRowRolesCollection rowsRoles, StringBuilder strB)
        {
            foreach (SOARolePropertyRowRoles rowRoles in rowsRoles)
            {
                foreach (IRole role in rowRoles.Roles)
                {
                    InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder();

                    strB.Append(TSqlBuilder.Instance.DBStatementSeperator);

                    builder.AppendItem("ROLE_ID", roleID);
                    builder.AppendItem("ROW_NUMBER", rowRoles.Row.RowNumber);
                    builder.AppendItem("OPERATOR_TYPE", (int)rowRoles.Row.OperatorType);
                    builder.AppendItem("OPERATOR_ID", role.ID);
                    builder.AppendItem("OPERATOR_NAME", role.FullCodeName);

                    builder.AppendTenantCode();

                    string sql = string.Format("INSERT INTO WF.ROLE_PROPERTIES_USER_CONTAINERS {0}", builder.ToSqlString(TSqlBuilder.Instance));

                    strB.Append(sql);
                }
            }
        }
		//取得填写日志的SQL语句
		private static string GetInsertUserSql(string strAppName,
			string strGoalID, 
			string strGoalName,
			string strGoalDisplayName, 
			string strOpType,
			string strExplain,
			string strOriginalData, 
			bool bOpSucceed)
		{
			string strUserDisplayname = GlobalInfo.UserLogOnInfo.OuUsers[0].UserDisplayName;
			string strUserGuid = GlobalInfo.UserLogOnInfo.UserGuid;
			string strUserAllPathName = GlobalInfo.UserLogOnInfo.OuUsers[0].AllPathName;
			string strUserLogonName = GlobalInfo.UserLogOnInfo.UserLogOnName;

			string strHostIP = GlobalInfo.HttpEnvironment.UserHostAddress;
			string strHostName = GlobalInfo.HttpEnvironment.UserHostName;
			string strUrl = GlobalInfo.HttpEnvironment.Url.ToString();

			InsertSqlClauseBuilder ic = new InsertSqlClauseBuilder();
			ic.AppendItem("OP_USER_DISPLAYNAME", strUserDisplayname);
			ic.AppendItem("OP_USER_GUID", strUserGuid);
			ic.AppendItem("OP_USER_DISTINCTNAME", strUserAllPathName);
			ic.AppendItem("OP_USER_LOGONNAME", strUserLogonName);
			ic.AppendItem("HOST_IP", strHostIP);
			ic.AppendItem("HOST_NAME", strHostName);
			ic.AppendItem("APP_GUID", GetGuidByType(strAppName, "", "CODE_NAME"));
			ic.AppendItem("OP_URL", strUrl);
			ic.AppendItem("GOAL_ID", strGoalID);
			ic.AppendItem("GOAL_NAME", strGoalName);
			ic.AppendItem("GOAL_DISNAME", strGoalDisplayName);
			ic.AppendItem("OP_GUID", GetGuidByType(strAppName, strOpType, "CODE_NAME"));
			ic.AppendItem("GOAL_EXPLAIN", strExplain);
			ic.AppendItem("ORIGINAL_DATA", strOriginalData);
			ic.AppendItem("LOG_SUCCED", bOpSucceed ? "y" : "n");

			return " INSERT INTO USER_OPEATION_LOG " + ic.ToSqlString(TSqlBuilder.Instance);
		}
		private static string GetInsertConditionCalculateResultSql(string ownerID, string userID)
		{
			InsertSqlClauseBuilder insertBuilder = new InsertSqlClauseBuilder();

			insertBuilder.AppendItem("OwnerID", ownerID);
			insertBuilder.AppendItem("UserID", userID);

			return string.Format("INSERT INTO SC.ConditionCalculateResult{0}", insertBuilder.ToSqlString(TSqlBuilder.Instance));
		}
        private static string PrepareUserInsert(string userID, string userName, string gender)
        {
            InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder();

            builder.AppendItem("UserID", userID);
            builder.AppendItem("UserName", userName);
            builder.AppendItem("Gender", gender);

            return string.Format("INSERT INTO Users{0}", builder.ToSqlString(TSqlBuilder.Instance));
        }
		private void InsertUsers(DataRow oRow)
		{
			ExceptionHelper.TrueThrow(ContainsValue(0, "LOGON_NAME") < 0, "对不起,导入人员数据必须包含该人员的“登录名称”!");
			string strParent, strSelfAllPathName, strRootGuid, strInnerSort;
			DataRow row = PrepareForInsert(oRow, out strParent, out strSelfAllPathName, out strRootGuid, out strInnerSort);

			string strGuid = Guid.NewGuid().ToString();
			InsertSqlClauseBuilder uIC = new InsertSqlClauseBuilder();
			InsertSqlClauseBuilder ouIC = new InsertSqlClauseBuilder();

			uIC.AppendItem("GUID", strGuid);
			//uIC.AppendItem("PERSON_ID", string.Empty);// strGuid.Substring(0, 8));
			ouIC.AppendItem("USER_GUID", strGuid);
			ouIC.AppendItem("PARENT_GUID", strRootGuid);

			for (int i = 2; i < oRow.Table.Columns.Count; i++)
			{
				if (string.IsNullOrEmpty(oRow[i].ToString()) == false)
				{
					string strRealColumnName = _DataColumns[ContainsValue(2, oRow.Table.Columns[i].ColumnName)][0];

					if (strRealColumnName == "NAME")
						uIC.AppendItem("RANK_CODE", GetRankCode("USERS", (string)oRow[i]));
					else
					{
						if (strRealColumnName == "GUID" || strRealColumnName.IndexOf("GUID") >= 0)
							continue;
						else
						{
							if (CheckXsdExist(strRealColumnName, "USERS"))
								uIC.AppendItem(strRealColumnName, oRow[i]);
							if (CheckXsdExist(strRealColumnName, "OU_USERS"))
								ouIC.AppendItem(strRealColumnName, oRow[i]);
						}
					}
				}
			}

			if (ContainsValue(0, "NAME") < 0)
				uIC.AppendItem("RANK_CODE", GetRankCode("USERS", string.Empty));

			GetAndSetUserName(uIC, oRow);

			if (ContainsValue(0, "ALL_PATH_NAME") < 0)
				ouIC.AppendItem("ALL_PATH_NAME", strSelfAllPathName);
			ouIC.AppendItem("INNER_SORT", strInnerSort);
			ouIC.AppendItem("GLOBAL_SORT", OGUCommonDefine.DBValueToString(row["GLOBAL_SORT"]) + strInnerSort);
			ouIC.AppendItem("ORIGINAL_SORT", OGUCommonDefine.DBValueToString(row["ORIGINAL_SORT"]) + strInnerSort);
			ouIC.AppendItem("STATUS", "1");

			string strSql = "INSERT INTO USERS " + uIC.ToSqlString(TSqlBuilder.Instance) + ";\n"
				+ "INSERT INTO OU_USERS " + ouIC.ToSqlString(TSqlBuilder.Instance) + ";\n";

			InnerCommon.ExecuteDataset(strSql);
			_StrBuild.Append(strSql);
		}