public IList <RoleDisplayItem> LoadByRoleIds(string[] ids)
        {
            IList <RoleDisplayItem> result = null;

            if (ids.Length > 0 && ids.Length > 0)
            {
                string sql = @"SELECT O.*, A.ID AS AppID, A.Name As AppName, A.DisplayName AS AppDisplayName FROM  
 SC.SchemaObjectSnapshot O INNER JOIN SC.SchemaMembersSnapshot R ON R.MemberID = O.ID
 INNER JOIN SC.SchemaObjectSnapshot_Current A ON R.ContainerID = A.ID
 WHERE ";

                InSqlClauseBuilder inBuilder1 = new InSqlClauseBuilder("O.SchemaType");
                inBuilder1.AppendItem(SchemaInfo.FilterByCategory("Roles").ToSchemaNames());

                InSqlClauseBuilder inBuilder2 = new InSqlClauseBuilder("O.ID");
                inBuilder2.AppendItem(ids);

                var timeLimit1 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("O.");
                var timeLimit2 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("R.");

                WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();
                builder.AppendItem("O.Status", (int)SchemaObjectStatus.Normal);
                builder.AppendItem("R.Status", (int)SchemaObjectStatus.Normal);

                sql += new ConnectiveSqlClauseCollection(inBuilder1, inBuilder2, timeLimit1, timeLimit2, builder).ToSqlString(TSqlBuilder.Instance);

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

                result = new List <RoleDisplayItem>(table.Rows.Count);
                foreach (DataRow row in table.Rows)
                {
                    var obj = new RoleDisplayItem();
                    ORMapping.DataRowToObject(row, obj);
                    result.Add(obj);
                }
            }
            else
            {
                result = new List <RoleDisplayItem>();
            }

            return(result);
        }
		public IList<RoleDisplayItem> LoadByRoleIds(string[] ids)
		{
			IList<RoleDisplayItem> result = null;
			if (ids.Length > 0 && ids.Length > 0)
			{
				string sql = @"SELECT O.*, A.ID AS AppID, A.Name As AppName, A.DisplayName AS AppDisplayName FROM  
 SC.SchemaObjectSnapshot O INNER JOIN SC.SchemaMembersSnapshot R ON R.MemberID = O.ID
 INNER JOIN SC.SchemaObjectSnapshot_Current A ON R.ContainerID = A.ID
 WHERE ";

				InSqlClauseBuilder inBuilder1 = new InSqlClauseBuilder("O.SchemaType");
				inBuilder1.AppendItem(SchemaInfo.FilterByCategory("Roles").ToSchemaNames());

				InSqlClauseBuilder inBuilder2 = new InSqlClauseBuilder("O.ID");
				inBuilder2.AppendItem(ids);

				var timeLimit1 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("O.");
				var timeLimit2 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("R.");

				WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();
				builder.AppendItem("O.Status", (int)SchemaObjectStatus.Normal);
				builder.AppendItem("R.Status", (int)SchemaObjectStatus.Normal);

				sql += new ConnectiveSqlClauseCollection(inBuilder1, inBuilder2, timeLimit1, timeLimit2, builder).ToSqlString(TSqlBuilder.Instance);

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

				result = new List<RoleDisplayItem>(table.Rows.Count);
				foreach (DataRow row in table.Rows)
				{
					var obj = new RoleDisplayItem();
					ORMapping.DataRowToObject(row, obj);
					result.Add(obj);
				}
			}
			else
			{
				result = new List<RoleDisplayItem>();
			}

			return result;
		}