internal SelectQuery(QueryBuilder builder) : base(builder) { // Get table name DbTableAttribute tableAttribute = typeof(T) .GetCustomAttributes <DbTableAttribute>(true) .FirstOrDefault(); if (tableAttribute != null) { From(tableAttribute.Name); } else { From(typeof(T).Name); } foreach (MemberInfo member in typeof(T).GetValueMembers()) { Type memberType = member.GetUnderlyingType(); DbFieldAttribute columnAttribute = member.GetCustomAttribute <DbFieldAttribute>(true); SelectIgnoreAttribute selectIgnore = member.GetCustomAttribute <SelectIgnoreAttribute>(true); if (columnAttribute != null && selectIgnore == null) { Select(columnAttribute.Name); } } }
internal async Task <T> Deserialize(DbClient conn, ResultRow row) { T obj = new T(); List <MemberInfo> members = obj.GetType().GetValueMembers(); foreach (MemberInfo member in members) { SelectIgnoreAttribute selectIgnore = member.GetCustomAttribute <SelectIgnoreAttribute>(true); if (selectIgnore != null) { continue; } object value = await GetMemberValue(member, conn, row); if (value != null) { member.SetValue(obj, value); } } return(obj); }