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); }
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)); } }
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); }