protected static IEnumerable <PropertyInfo> GetReadableProperties(Type type, IDbObjectDescriptor descriptor)
        {
            if (ReadableProperties.ContainsKey(type))
            {
                return(ReadableProperties[type]);
            }

            lock (CacheLock)
            {
                if (ReadableProperties.ContainsKey(type))
                {
                    return(ReadableProperties[type]);
                }

                var properties = type.GetProperties()
                                 .Where(p => descriptor.CanRead(p.Name));

                ReadableProperties.Add(type, properties);

                return(properties);
            }
        }
Beispiel #2
0
 /// <summary>
 /// Construct a new DbLayer
 /// </summary>
 /// <param name="dbInterface">An interface to an underlying database</param>
 /// <param name="descriptor">Metadata to enable mapping T's to database tables</param>
 /// <param name="mapper">An object-relational mapper</param>
 protected DbLayer(IDbInterface <TDbParameter> dbInterface, IDbObjectDescriptor descriptor, IDbMapper <T> mapper)
 {
     DbInterface = dbInterface ?? throw new ArgumentNullException(nameof(dbInterface));
     Descriptor  = descriptor ?? throw new ArgumentNullException(nameof(descriptor));
     Mapper      = mapper ?? throw new ArgumentNullException(nameof(mapper));
 }
Beispiel #3
0
 /// <summary>
 /// Construct a new DbMapper
 /// </summary>
 /// <param name="descriptor">Metadata to enable mapping T's to database tables</param>
 public DbMapper(IDbObjectDescriptor descriptor)
 {
     Descriptor = descriptor ?? throw new ArgumentNullException(nameof(descriptor));
 }