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); } }
/// <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)); }
/// <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)); }