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}.");
            }
        }
Exemple #2
0
        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));
        }
Exemple #3
0
 public static IQuery Query(this IDbConnection connection, string sql, IQueryDefine queryDefine = null)
 {
     return(CreateQuery <OrderedDictionary>(connection, sql, queryDefine, true));
 }
Exemple #4
0
 public static IQuery <TRootEntity> Query <TRootEntity>(this IDbConnection connection, string sql, IQueryDefine queryDefine = null) where TRootEntity : class
 {
     return(CreateQuery <TRootEntity>(connection, sql, queryDefine, false));
 }