private static Query Count(IDataDescriptor descriptor) { var tableName = Dialect.ResolveTableName(descriptor); var sql = Dialect.Count(descriptor, tableName, descriptor.Schema, null, null); return(new Query(sql)); }
private static Query Count(IDataDescriptor descriptor, dynamic where) { object instance = where ?? new { }; var accessor = ReadAccessor.Create(instance.GetType()); var whereHash = accessor.AsReadOnlyDictionary(instance); var hashKeysRewrite = whereHash.Keys.ToDictionary(k => Dialect.ResolveColumnName(descriptor, k), v => v); var tableName = Dialect.ResolveTableName(descriptor); var columnNames = Dialect.ResolveColumnNames(descriptor).ToList(); var whereFilter = columnNames.Intersect(hashKeysRewrite.Keys).ToList(); var parameters = whereFilter.ToDictionary(key => $"{hashKeysRewrite[key]}", key => whereHash[hashKeysRewrite[key]]); var parameterKeys = parameters.Keys.ToList(); var sql = Dialect.Count(descriptor, tableName, descriptor.Schema, whereFilter, parameterKeys); return(new Query(sql, parameters)); }