Example #1
0
        private static void SetRelationOnRecord(string virtualColumnName,
                                                EagarDataRecord[] relationRecordSource,
                                                int targetOrdinal,
                                                EagarDataRecord naturalReader,
                                                int sourceOrdinal)
        {
            naturalReader.Add(virtualColumnName, relationRecordSource.Where(join =>
            {
                var left  = naturalReader[targetOrdinal];
                var right = @join[sourceOrdinal];
                if (left == null && right == null)
                {
                    return(false);
                }

                return(left == right || (left != null && right != null && left.Equals(right)));
            }).ToArray());
        }
Example #2
0
        /// <summary>
        ///     Creates a new Instance based on possible Ctor's and the given
        ///     <paramref name="reader" />
        /// </summary>
        /// <returns></returns>
        public static object SetPropertiesViaReflection(
            this DbClassInfoCache type,
            XmlDataRecord reader,
            DbAccessType?accessType = null,
            DbConfig config         = null)
        {
            if (reader == null)
            {
                return(null);
            }

            var eagerReader = new EagarDataRecord();

            for (int i = 0; i < reader.FieldCount; i++)
            {
                eagerReader.Add(eagerReader.GetName(i), eagerReader[i]);
            }

            bool created;
            var  source = DbAccessLayer.CreateInstance(type, eagerReader, out created);

            if (created)
            {
                return(source);
            }

            if (config == null)
            {
                config = new DbConfig(true);
            }

#pragma warning disable 618
            return(DbAccessLayer.ReflectionPropertySet(config, source, type, eagerReader, new DbAccessLayer.ReflectionSetCacheModel(), accessType));

#pragma warning restore 618
        }