public UpdateQuery <T> Where(T obj) { List <MemberInfo> members = obj.GetType().GetValueMembers(); foreach (MemberInfo member in members) { Type memberType = member.GetUnderlyingType(); DbFieldAttribute columnAttribute = member.GetCustomAttribute <DbFieldAttribute>(true); WhereIgnoreAttribute whereIgnore = member.GetCustomAttribute <WhereIgnoreAttribute>(true); if (columnAttribute != null && whereIgnore == null) { object value = member.GetValue(obj); if (columnAttribute.ValidFormatter(memberType)) { value = columnAttribute.FormatGetValue(memberType, value); } Where(columnAttribute.Name, value); } } return(this); }
internal InsertQuery(QueryBuilder builder, T obj) : base(builder) { // Get table name DbTableAttribute tableAttribute = obj.GetType() .GetCustomAttributes <DbTableAttribute>(true) .FirstOrDefault(); if (tableAttribute != null) { table = tableAttribute.Name; } else { table = obj.GetType().Name; } // Get custom fields List <MemberInfo> members = obj.GetType().GetValueMembers(); foreach (MemberInfo member in members) { Type memberType = member.GetUnderlyingType(); DbFieldAttribute columnAttribute = member.GetCustomAttribute <DbFieldAttribute>(true); InsertIgnoreAttribute insertIgnore = member.GetCustomAttribute <InsertIgnoreAttribute>(true); if (columnAttribute != null && insertIgnore == null) { object value = member.GetValue(obj); if (columnAttribute.ValidFormatter(memberType)) { value = columnAttribute.FormatGetValue(memberType, value); } Value(columnAttribute.Name, value); } } }
internal DeleteQuery(QueryBuilder builder, T obj) : base(builder) { // Get table name DbTableAttribute tableAttribute = obj.GetType() .GetCustomAttributes <DbTableAttribute>(true) .FirstOrDefault(); if (tableAttribute != null) { From(tableAttribute.Name); } else { From(obj.GetType().Name); } List <MemberInfo> members = obj.GetType().GetValueMembers(); foreach (MemberInfo member in members) { Type memberType = member.GetUnderlyingType(); DbFieldAttribute columnAttribute = member.GetCustomAttribute <DbFieldAttribute>(true); WhereIgnoreAttribute whereIgnore = member.GetCustomAttribute <WhereIgnoreAttribute>(true); if (columnAttribute != null && whereIgnore == null) { object value = member.GetValue(obj); if (columnAttribute.ValidFormatter(memberType)) { value = columnAttribute.FormatGetValue(memberType, value); } Where(columnAttribute.Name, value); } } }
async Task <object> GetMemberValue(MemberInfo member, DbClient conn, ResultRow row) { Type memberType = member.GetUnderlyingType(); DbFieldAttribute columnAttribute = member.GetCustomAttribute <DbFieldAttribute>(true); DbReferenceAttribute referenceAttribute = member.GetCustomAttribute <DbReferenceAttribute>(true); if (columnAttribute != null) { object value = row[columnAttribute.Name ?? member.Name]; string columnName = columnAttribute.Name ?? member.Name; if (columnAttribute.ValidFormatter(memberType)) { value = columnAttribute.FormatSetValue(memberType, value); } else if (memberType == typeof(DateTime)) { value = row.GetDateTime(columnName, default(DateTime)); } else if (memberType == typeof(bool)) { value = row.GetBoolean(columnName); } if (!(value is DBNull)) { return(value); } } if (referenceAttribute != null) { object value = row[referenceAttribute.Column]; ReferenceType refType = ReferenceType.Singular; if (memberType.IsGenericType && memberType.GetGenericTypeDefinition() == typeof(List <>)) { memberType = memberType.GetGenericArguments()[0]; refType = ReferenceType.List; } else if (memberType.IsArray) { memberType = memberType.GetElementType(); refType = ReferenceType.Array; } object result = await(Task <object>) GetNestedMethod().MakeGenericMethod(memberType).Invoke( this, new object[] { conn, referenceAttribute.ForeignColumn, value, refType } ); if (!(value is DBNull)) { return(result); } } return(null); }