Ejemplo n.º 1
0
        internal static List <T> SqlColumn <T>(this IDbCommand dbCmd, string sql, object anonType = null)
        {
            if (anonType != null)
            {
                dbCmd.SetParameters <T>(anonType, excludeDefaults: false);
            }
            dbCmd.CommandText = sql;

            return(IsScalar <T>()
                ? dbCmd.Column <T>()
                : dbCmd.ConvertToList <T>());
        }
Ejemplo n.º 2
0
        internal static List <T> SqlColumn <T>(this IDbCommand dbCmd, string sql, Dictionary <string, object> dict)
        {
            if (dict != null)
            {
                SetParameters(dbCmd, dict, false);
            }
            dbCmd.CommandText = sql;

            return(IsScalar <T>()
                ? dbCmd.Column <T>()
                : dbCmd.ConvertToList <T>());
        }
Ejemplo n.º 3
0
        internal static List <T> Select <T>(this IDbCommand dbCmd, string sql, Dictionary <string, object> dict)
        {
            if (dict != null)
            {
                SetParameters(dbCmd, (IDictionary <string, object>)dict, (bool)false);
            }
            dbCmd.CommandText = OrmLiteConfig.DialectProvider.ToSelectStatement(typeof(T), sql);

            return(IsScalar <T>()
                ? dbCmd.Column <T>()
                : dbCmd.ConvertToList <T>());
        }
Ejemplo n.º 4
0
        internal static List <T> Select <T>(this IDbCommand dbCmd, string sql, object anonType = null)
        {
            if (anonType != null)
            {
                dbCmd.SetParameters <T>(anonType, excludeDefaults: false);
            }
            dbCmd.CommandText = OrmLiteConfig.DialectProvider.ToSelectStatement(typeof(T), sql);

            return(IsScalar <T>()
                ? dbCmd.Column <T>()
                : dbCmd.ConvertToList <T>());
        }
Ejemplo n.º 5
0
        internal static List <TOutputModel> SqlProcedureFmt <TOutputModel>(this IDbCommand dbCmd,
                                                                           object fromObjWithProperties,
                                                                           string sqlFilter,
                                                                           params object[] filterParams)
        {
            var modelType = typeof(TOutputModel);

            string sql = dbCmd.GetDialectProvider().ToSelectFromProcedureStatement(
                fromObjWithProperties, modelType, sqlFilter, filterParams);

            return(dbCmd.ConvertToList <TOutputModel>(sql));
        }
        public static void LoadReferences <T>(this IDbCommand dbCmd, T instance)
        {
            var modelDef        = ModelDefinition <T> .Definition;
            var fieldDefs       = modelDef.AllFieldDefinitionsArray.Where(x => x.IsReference);
            var pkValue         = modelDef.PrimaryKey.GetValue(instance);
            var dialectProvider = OrmLiteConfig.DialectProvider;

            foreach (var fieldDef in fieldDefs)
            {
                dbCmd.Parameters.Clear();
                var listInterface = fieldDef.FieldType.GetTypeWithGenericInterfaceOf(typeof(IList <>));
                if (listInterface != null)
                {
                    var refType     = listInterface.GenericTypeArguments()[0];
                    var refModelDef = refType.GetModelDefinition();

                    var refField = GetRefFieldDef(modelDef, refModelDef, refType);

                    var sqlFilter = dialectProvider.GetQuotedColumnName(refField.FieldName) + "={0}";
                    var sql       = dialectProvider.ToSelectStatement(refType, null, sqlFilter, pkValue);

                    var results = dbCmd.ConvertToList(refType, sql);
                    fieldDef.SetValueFn(instance, results);
                }
                else
                {
                    var refType     = fieldDef.FieldType;
                    var refModelDef = refType.GetModelDefinition();

                    var refSelf  = GetSelfRefFieldDefIfExists(modelDef, refModelDef);
                    var refField = refSelf == null
                        ? GetRefFieldDef(modelDef, refModelDef, refType)
                        : GetRefFieldDefIfExists(modelDef, refModelDef);

                    if (refField != null)
                    {
                        var sqlFilter = dialectProvider.GetQuotedColumnName(refField.FieldName) + "={0}";
                        var sql       = dialectProvider.ToSelectStatement(refType, null, sqlFilter, pkValue);
                        var result    = dbCmd.ConvertTo(refType, sql);
                        fieldDef.SetValueFn(instance, result);
                    }
                    else if (refSelf != null)
                    {
                        //Load Self Table.RefTableId PK
                        var refPkValue = refSelf.GetValue(instance);
                        var sqlFilter  = dialectProvider.GetQuotedColumnName(refModelDef.PrimaryKey.FieldName) + "={0}";
                        var sql        = dialectProvider.ToSelectStatement(refType, null, sqlFilter, refPkValue);
                        var result     = dbCmd.ConvertTo(refType, sql);
                        fieldDef.SetValueFn(instance, result);
                    }
                }
            }
        }
        internal static List <TModel> SelectFmt <TModel>(this IDbCommand dbCmd, Type fromTableType, string sqlFilter, params object[] filterParams)
        {
            var sql      = new StringBuilder();
            var modelDef = ModelDefinition <TModel> .Definition;

            sql.AppendFormat("SELECT {0} FROM {1}", OrmLiteConfig.DialectProvider.GetColumnNames(modelDef),
                             OrmLiteConfig.DialectProvider.GetQuotedTableName(fromTableType.GetModelDefinition()));
            if (!String.IsNullOrEmpty(sqlFilter))
            {
                sqlFilter = sqlFilter.SqlFmt(filterParams);
                sql.Append(" WHERE ");
                sql.Append(sqlFilter);
            }

            return(dbCmd.ConvertToList <TModel>(sql.ToString()));
        }
        internal static List <T> Where <T>(this IDbCommand dbCmd, object anonType)
        {
            dbCmd.SetFilters <T>(anonType);

            return(dbCmd.ConvertToList <T>());
        }
        internal static List <TModel> SelectFmt <TModel>(this IDbCommand dbCmd, Type fromTableType, string sqlFilter, params object[] filterParams)
        {
            var sql = ToSelectFmt <TModel>(dbCmd.GetDialectProvider(), fromTableType, sqlFilter, filterParams);

            return(dbCmd.ConvertToList <TModel>(sql.ToString()));
        }
 internal static List <T> SelectFmt <T>(this IDbCommand dbCmd, string sqlFilter, params object[] filterParams)
 {
     return(dbCmd.ConvertToList <T>(
                dbCmd.GetDialectProvider().ToSelectStatement(typeof(T), sqlFilter, filterParams)));
 }
 internal static List <T> Select <T>(this IDbCommand dbCmd, string sql, IEnumerable <IDbDataParameter> sqlParams)
 {
     dbCmd.SetParameters(sqlParams).CommandText = dbCmd.GetDialectProvider().ToSelectStatement(typeof(T), sql);
     return(dbCmd.ConvertToList <T>());
 }
        internal static List <Into> LoadListWithReferences <Into, From>(this IDbCommand dbCmd, SqlExpression <From> expr = null)
        {
            var dialectProvider = OrmLiteConfig.DialectProvider;

            if (expr == null)
            {
                expr = dialectProvider.SqlExpression <From>();
            }

            var sql           = expr.SelectInto <Into>();
            var parentResults = dbCmd.ExprConvertToList <Into>(sql);

            var modelDef  = ModelDefinition <Into> .Definition;
            var fieldDefs = modelDef.AllFieldDefinitionsArray.Where(x => x.IsReference);

            expr.Select(dialectProvider.GetQuotedColumnName(modelDef, modelDef.PrimaryKey));
            var subSql = expr.ToSelectStatement();

            foreach (var fieldDef in fieldDefs)
            {
                var listInterface = fieldDef.FieldType.GetTypeWithGenericInterfaceOf(typeof(IList <>));
                if (listInterface != null)
                {
                    var refType     = listInterface.GenericTypeArguments()[0];
                    var refModelDef = refType.GetModelDefinition();

                    var refField = GetRefFieldDef(modelDef, refModelDef, refType);

                    var sqlRef = "SELECT {0} FROM {1} WHERE {2} IN ({3})".Fmt(
                        dialectProvider.GetColumnNames(refModelDef),
                        dialectProvider.GetQuotedTableName(refModelDef),
                        dialectProvider.GetQuotedColumnName(refField),
                        subSql);
                    var childResults = dbCmd.ConvertToList(refType, sqlRef);

                    var           map = new Dictionary <object, List <object> >();
                    List <object> refValues;

                    foreach (var result in childResults)
                    {
                        var refValue = refField.GetValue(result);
                        if (!map.TryGetValue(refValue, out refValues))
                        {
                            map[refValue] = refValues = new List <object>();
                        }
                        refValues.Add(result);
                    }

                    var untypedApi = dbCmd.CreateTypedApi(refType);
                    foreach (var result in parentResults)
                    {
                        var pkValue = modelDef.PrimaryKey.GetValue(result);
                        if (map.TryGetValue(pkValue, out refValues))
                        {
                            var castResults = untypedApi.Cast(refValues);
                            fieldDef.SetValueFn(result, castResults);
                        }
                    }
                }
                else
                {
                    var refType     = fieldDef.FieldType;
                    var refModelDef = refType.GetModelDefinition();

                    var refSelf  = GetSelfRefFieldDefIfExists(modelDef, refModelDef);
                    var refField = refSelf == null
                        ? GetRefFieldDef(modelDef, refModelDef, refType)
                        : GetRefFieldDefIfExists(modelDef, refModelDef);

                    var map = new Dictionary <object, object>();

                    if (refField != null)
                    {
                        var sqlRef = "SELECT {0} FROM {1} WHERE {2} IN ({3})".Fmt(
                            dialectProvider.GetColumnNames(refModelDef),
                            dialectProvider.GetQuotedTableName(refModelDef),
                            dialectProvider.GetQuotedColumnName(refField),
                            subSql);
                        var childResults = dbCmd.ConvertToList(refType, sqlRef);

                        foreach (var result in childResults)
                        {
                            var refValue = refField.GetValue(result);
                            map[refValue] = result;
                        }

                        foreach (var result in parentResults)
                        {
                            object childResult;
                            var    pkValue = modelDef.PrimaryKey.GetValue(result);
                            if (map.TryGetValue(pkValue, out childResult))
                            {
                                fieldDef.SetValueFn(result, childResult);
                            }
                        }
                    }
                    else if (refSelf != null)
                    {
                        //Load Self Table.RefTableId PK
                        expr.Select(dialectProvider.GetQuotedColumnName(refSelf));
                        subSql = expr.ToSelectStatement();

                        var sqlRef = "SELECT {0} FROM {1} WHERE {2} IN ({3})".Fmt(
                            dialectProvider.GetColumnNames(refModelDef),
                            dialectProvider.GetQuotedTableName(refModelDef),
                            dialectProvider.GetQuotedColumnName(refModelDef.PrimaryKey),
                            subSql);
                        var childResults = dbCmd.ConvertToList(refType, sqlRef);

                        foreach (var result in childResults)
                        {
                            var pkValue = refModelDef.PrimaryKey.GetValue(result);
                            map[pkValue] = result;
                        }

                        foreach (var result in parentResults)
                        {
                            object childResult;
                            var    fkValue = refSelf.GetValue(result);
                            if (fkValue != null && map.TryGetValue(fkValue, out childResult))
                            {
                                fieldDef.SetValueFn(result, childResult);
                            }
                        }
                    }
                }
            }

            return(parentResults);
        }
Ejemplo n.º 13
0
        public List <T> SqlProcConvertToList <T>(string procName, object inParams)
        {
            IDbCommand dbCommand = DBConnection.SqlProc(procName, inParams);

            return(dbCommand.ConvertToList <T>());
        }
Ejemplo n.º 14
0
 internal static List <T> Where <T>(this IDbCommand dbCmd, string name, object value)
 {
     SetFilter <T>(dbCmd, name, value);
     return(dbCmd.ConvertToList <T>());
 }
 internal static List <T> SqlColumn <T>(this IDbCommand dbCmd, string sql, IEnumerable <IDbDataParameter> sqlParams)
 {
     dbCmd.SetParameters(sqlParams).CommandText = sql;
     return(dbCmd.ConvertToList <T>());
 }
        internal static List <T> SelectNonDefaults <T>(this IDbCommand dbCmd, object filter)
        {
            dbCmd.SetFilters <T>(filter, excludeDefaults: true);

            return(dbCmd.ConvertToList <T>());
        }
Ejemplo n.º 17
0
 internal static List <T> SqlColumn <T>(this IDbCommand dbCmd, string sql, object anonType = null)
 {
     dbCmd.SetParameters <T>(anonType, excludeDefaults: false, sql: ref sql).CommandText = sql;
     return(dbCmd.ConvertToList <T>());
 }