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, 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, 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, sqlFilter, refPkValue);
                        var result     = dbCmd.ConvertTo(refType, sql);
                        fieldDef.SetValueFn(instance, result);
                    }
                }
            }
        }
Exemple #2
0
        public bool SqlProc(string procName, object inParams, int sqlCode)
        {
            IDbCommand          dbCommand = DBConnection.SqlProc(procName, inParams);
            ExcuteProcModelData result    = dbCommand.ConvertTo <ExcuteProcModelData>();

            return(result.MessageId == sqlCode);
        }
        internal static T Single <T>(this IDbCommand dbCmd, string sql, object anonType)
        {
            dbCmd.SetParameters <T>(anonType, excludeDefaults: false);

            return(OrmLiteUtils.IsScalar <T>()
                ? dbCmd.Scalar <T>(sql)
                : dbCmd.ConvertTo <T>(dbCmd.GetDialectProvider().ToSelectStatement(typeof(T), sql)));
        }
        internal static T Single <T>(this IDbCommand dbCmd, string sql, IEnumerable <IDbDataParameter> sqlParams)
        {
            dbCmd.SetParameters(sqlParams);

            return(OrmLiteUtils.IsScalar <T>()
                ? dbCmd.Scalar <T>(sql)
                : dbCmd.ConvertTo <T>(dbCmd.GetDialectProvider().ToSelectStatement(typeof(T), sql)));
        }
        internal static T SingleWhere <T>(this IDbCommand dbCmd, string name, object value)
        {
            if (!dbCmd.CanReuseParam <T>(name))
            {
                SetFilter <T>(dbCmd, name, value);
            }

            ((IDbDataParameter)dbCmd.Parameters[0]).Value = value;

            return(dbCmd.ConvertTo <T>());
        }
        internal static T SingleById <T>(this IDbCommand dbCmd, object value)
        {
            if (!dbCmd.CanReuseParam <T>(ModelDefinition <T> .PrimaryKeyName))
            {
                SetFilter <T>(dbCmd, ModelDefinition <T> .PrimaryKeyName, value);
            }

            ((IDbDataParameter)dbCmd.Parameters[0]).Value = value;

            return(dbCmd.ConvertTo <T>());
        }
        internal static T Single <T>(this IDbCommand dbCmd, string sql, object anonType)
        {
            if (IsScalar <T>())
            {
                return(Scalar <T>(dbCmd, sql, anonType));
            }

            dbCmd.SetParameters <T>(anonType, excludeDefaults: false);

            return(dbCmd.ConvertTo <T>(OrmLiteConfig.DialectProvider.ToSelectStatement(typeof(T), sql)));
        }
        internal static T Single <T>(this IDbCommand dbCmd, object anonType)
        {
            dbCmd.SetFilters <T>(anonType, excludeDefaults: false);

            return(dbCmd.ConvertTo <T>());
        }
 internal static T SingleFmt <T>(this IDbCommand dbCmd, string filter, params object[] filterParams)
 {
     return(dbCmd.ConvertTo <T>(dbCmd.GetDialectProvider().ToSelectStatement(typeof(T), filter, filterParams)));
 }
Exemple #10
0
 internal static T SingleWhere <T>(this IDbCommand dbCmd, string name, object value)
 {
     SetFilter <T>(dbCmd, name, value);
     return(dbCmd.ConvertTo <T>());
 }
Exemple #11
0
 internal static T SingleById <T>(this IDbCommand dbCmd, object value)
 {
     SetFilter <T>(dbCmd, ModelDefinition <T> .PrimaryKeyName, value);
     return(dbCmd.ConvertTo <T>());
 }
Exemple #12
0
        public T SqlProcConvertTo <T>(string procName, object inParams)
        {
            IDbCommand dbCommand = DBConnection.SqlProc(procName, inParams);

            return(dbCommand.ConvertTo <T>());
        }