internal void InitValue(T instance, OrmFieldMapUpdatedAt <T> updatedAtFieldMap) { if (updatedAtFieldMap.IsNull()) { throw new ArgumentNullException(nameof(updatedAtFieldMap)); } var value = Utilities.GetCurrentTimeStamp(); ValueSetter(instance, value); updatedAtFieldMap.ValueSetter(instance, value); }
/// <summary> /// Creates a new mapping description for a type of business object. /// </summary> public OrmEntityMap() { var staticFieldsInfo = Utilities.GetStaticFields <T>(); var identityFieldInfo = staticFieldsInfo.FirstOrDefault(f => typeof(OrmIdentityMapBase <T>).IsAssignableFrom(f.FieldType)); if (identityFieldInfo.IsNull()) { throw new NotSupportedException(string.Format( Properties.Resources.MicroOrmIsNotSupportedByTypeException, typeof(T).FullName)); } _identity = (OrmIdentityMapBase <T>)identityFieldInfo.GetValue(null); _fields = staticFieldsInfo.Where(f => typeof(OrmFieldMapBase <T>).IsAssignableFrom(f.FieldType)) .Select(f => (OrmFieldMapBase <T>)f.GetValue(null)).ToList(); if (null == _fields || _fields.Count < 1) { throw new NotSupportedException( string.Format(Properties.Resources.NoFieldMapsForMicroOrmException, typeof(T).FullName)); } _insertedAt = _fields.FirstOrDefault(f => f.GetType() == typeof(OrmFieldMapInsertedAt <T>)) as OrmFieldMapInsertedAt <T>; _insertedBy = _fields.FirstOrDefault(f => f.GetType() == typeof(OrmFieldMapInsertedBy <T>)) as OrmFieldMapInsertedBy <T>; _updatedAt = _fields.FirstOrDefault(f => f.GetType() == typeof(OrmFieldMapUpdatedAt <T>)) as OrmFieldMapUpdatedAt <T>; _updatedBy = _fields.FirstOrDefault(f => f.GetType() == typeof(OrmFieldMapUpdatedBy <T>)) as OrmFieldMapUpdatedBy <T>; _updateStatements = new ConcurrentDictionary <int, string>(Environment.ProcessorCount * 2, 10); if (_identity.PrimaryKeyAutoIncrement || !_identity.PrimaryKeyUpdatable) { PrimaryKeyUpdateWhereParamName = _identity.PrimaryKeyFieldName; } else { PrimaryKeyUpdateWhereParamName = null; for (int i = 0; i < _paramNameCandidats.Length; i++) { if (!_fields.Any(f => f.DbFieldName.EqualsByConvention(_paramNameCandidats[i]))) { PrimaryKeyUpdateWhereParamName = _paramNameCandidats[i]; break; } } if (PrimaryKeyUpdateWhereParamName.IsNullOrWhiteSpace()) { throw new NotSupportedException( "Failed to resolve UPDATE statement WHERE clause parameter name."); } } }