コード例 #1
0
ファイル: SelectQueryT.cs プロジェクト: gmantaos/Quermine
        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);
                }
            }
        }
コード例 #2
0
        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);
        }