internal static void SetRefSelfChildResults <Parent>(List <Parent> parents, FieldDefinition fieldDef, ModelDefinition refModelDef, FieldDefinition refSelf, IList childResults)
        {
            var map = new Dictionary <object, object>();

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

            foreach (var result in parents)
            {
                object childResult;
                var    fkValue = refSelf.GetValue(result);
                if (fkValue != null && map.TryGetValue(fkValue, out childResult))
                {
                    fieldDef.SetValueFn(result, childResult);
                }
            }
        }
Beispiel #2
0
        internal static void SetRefFieldChildResults <Parent>(List <Parent> parents, ModelDefinition modelDef,
                                                              FieldDefinition fieldDef, FieldDefinition refField, IList childResults)
        {
            var map = new Dictionary <object, object>();

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

            foreach (var result in parents)
            {
                var pkValue = modelDef.PrimaryKey.GetValue(result);
                if (map.TryGetValue(pkValue, out var childResult))
                {
                    fieldDef.SetValueFn(result, childResult);
                }
            }
        }
Beispiel #3
0
        public static bool HandledDbNullValue(FieldDefinition fieldDef, IDataReader dataReader, int colIndex, object instance)
        {
            if (fieldDef == null || fieldDef.SetValueFn == null || colIndex == NotFound)
            {
                return(true);
            }
            if (dataReader.IsDBNull(colIndex))
            {
                var value = fieldDef.IsNullable ? null : fieldDef.FieldTypeDefaultValue;
                if (OrmLiteConfig.OnDbNullFilter != null)
                {
                    var useValue = OrmLiteConfig.OnDbNullFilter(fieldDef);
                    if (useValue != null)
                    {
                        value = useValue;
                    }
                }

                fieldDef.SetValueFn(instance, value);
                return(true);
            }
            return(false);
        }