static string SqlQuery(Field[] keys, IConnectionContext context, string tempTable, Field hashCode) { var names = string.Join(",", keys.Select(f => "k.[" + f.FieldName() + "]")); var table = context.Entity.OutputTableName(context.Process.Name); var joins = string.Join(" AND ", keys.Select(f => "o.[" + f.FieldName() + "] = k.[" + f.FieldName() + "]")); var sql = string.Format("SELECT {0},o.[{1}] FROM #{2} k WITH (NOLOCK) INNER JOIN [{3}] o WITH (NOLOCK) ON ({4})", names, hashCode.FieldName(), tempTable, table, joins); context.Debug(sql); return sql; }
public static string SqlSelectInput(this IContext c, Field[] fields) { var fieldList = string.Join(",", fields.Select(f => "[" + f.Name + "]")); var noLock = c.Entity.NoLock ? "WITH (NOLOCK) " : string.Empty; var sql = $"SELECT {fieldList} FROM {SqlSchemaPrefix(c)}[{c.Entity.Name}] {noLock}"; if (c.Entity.Filter.Any()) { sql += " WHERE " + c.ResolveFilter(); } c.Debug(sql); return sql; }
public bool Match(Field[] fields, Row other) { return fields.Length > 1 ? fields.Select(f => this[f]).SequenceEqual(fields.Select(f => other[f])) : this[fields[0]].Equals(other[fields[0]]); }
public IEnumerable<object> ToEnumerable(Field[] fields) { return fields.Select(f => _storage[_index(f)]); }
static string SqlInsertTemplate(IConnectionContext context, string tempTable, Field[] keys) { var sql = string.Format("INSERT #{0} VALUES ({1});", tempTable, string.Join(",", keys.Select(k => "@" + k.FieldName()))); context.Debug(sql); return sql; }