Beispiel #1
0
        public string GetKeyFilterSql(DbTableFilter filter)
        {
            var cols    = filter.Columns.Select(c => c.ColumnNameQuoted).ToList();
            var strCols = string.Join(", ", cols);
            var sql     = string.Format(filter.EntityFilter.Template.StandardForm, strCols);

            return(sql);
        }
Beispiel #2
0
 public TableFilterExpression(TableExpression table, EntityFilter filter)  : base(SqlExpressionType.TableFilter, typeof(bool))
 {
     Table  = table;
     Filter = new DbTableFilter()
     {
         EntityFilter = filter
     };
     // Retrieve columns
     Columns = new List <ColumnExpression>();
     foreach (var member in filter.Members)
     {
         var col = table.TableInfo.Columns.FirstOrDefault(c => c.Member == member);
         // that should never happen, but just in case
         Util.Check(col != null, "Error processing filter, column for member {0} not found. Entity: {1}.",
                    member.MemberName, table.TableInfo.Entity.Name);
         Filter.Columns.Add(col);
         Columns.Add(new ColumnExpression(table, col));
     }
 }
Beispiel #3
0
        public virtual DbTableFilter BuildDbTableFilter(DbTableInfo tbl, EntityFilter entityFilter, ILog log = null)
        {
            var dbFilter = new DbTableFilter()
            {
                EntityFilter = entityFilter
            };
            var colList = new List <DbColumnInfo>();
            // setup columns
            var filterTempl = entityFilter.Template;

            foreach (var mName in filterTempl.ArgNames)
            {
                var col = tbl.GetColumnByMemberName(mName);
                if (col == null)
                {
                    col = tbl.Columns.FindByName(mName);
                }
                if (col != null)
                {
                    colList.Add(col);
                }
                else
                {
                    if (log == null)
                    {
                        Util.Throw($"Index/key filter on entity {tbl.Entity.Name}: member/column {mName} not found. Filter: {filterTempl}");
                    }
                    else
                    {
                        log.LogError($"Index/key filter on entity {tbl.Entity.Name}: member/column {mName} not found. Filter: {filterTempl}");
                    }
                } //else
            }     //foreach
            dbFilter.Columns.AddRange(colList);
            dbFilter.DefaultSql = GetKeyFilterSql(dbFilter);
            return(dbFilter);
        }