public QueryOptions(IQueryDefine queryDefine, Type rootEntityType, bool isFlatFormat) { QueryDefine = queryDefine; _rootEnttiyType = rootEntityType; _setParams = parameters => { }; _isFlatFormat = isFlatFormat; if (_isFlatFormat && !_rootEnttiyType.GetInterfaces().Any(x => x == typeof(IDictionary))) { throw new ArgumentException($"{nameof(rootEntityType)}({rootEntityType.FullName}) is invalid. {nameof(rootEntityType)} type is not inherited {typeof(IDictionary).FullName}."); } }
private static Query <TRootEntity> CreateQuery <TRootEntity>(this IDbConnection connection, string sql, IQueryDefine queryDefine, bool isDictionaryFormat) where TRootEntity : class { if (connection == null) { throw new AggregateException("connection is null."); } if (string.IsNullOrEmpty(sql)) { throw new AggregateException("sql is null or empty."); } IDatabaseAccessor databaseAccessor; if (connection.GetType().Name.ToLower().IndexOf("sqlite") != -1) { databaseAccessor = new SqliteDatabaseAccessor(); } else if (connection.GetType().Name.ToLower().IndexOf("mysql") != -1) { databaseAccessor = new MySqlDatabaseAccessor(); } else { databaseAccessor = new SqlServerDatabaseAccessor(); } if (queryDefine == null) { queryDefine = new QueryDefine(); } QueryOptions queryOptions = new QueryOptions(queryDefine, typeof(TRootEntity), isDictionaryFormat); queryOptions.Connection = connection; queryOptions.Sql = sql; return(new Query <TRootEntity>(databaseAccessor, queryOptions)); }
public static IQuery Query(this IDbConnection connection, string sql, IQueryDefine queryDefine = null) { return(CreateQuery <OrderedDictionary>(connection, sql, queryDefine, true)); }
public static IQuery <TRootEntity> Query <TRootEntity>(this IDbConnection connection, string sql, IQueryDefine queryDefine = null) where TRootEntity : class { return(CreateQuery <TRootEntity>(connection, sql, queryDefine, false)); }