public SqlCommandGenerateContext Build()
            {
                var parser = new DefaultCommandParser();

                this.context.QueryAttributes = this.context.Method.GetCustomAttributes <SqlAttribute>();

                this.context.HasAnyQueryAttribute = this.context.QueryAttributes != null && this.context.QueryAttributes.Any();

                if (!this.context.HasAnyQueryAttribute)
                {
                    this.context.CommandInfo = parser.Parse(this.context.Method.Name);
                }

                this.context.IDaoType = this.context.Method.DeclaringType;

                IEntityTypeProvider entityTypeProvider = NpiServicesCollection.GetService <IEntityTypeProvider>();

                this.context.EntityType = entityTypeProvider.Provide(this.context.Method);

                ITableNameProvider tableNameProvider = NpiServicesCollection.GetService <ITableNameProvider>();

                this.context.TableName = tableNameProvider.Provide(this.context.EntityType);

                this.context.Properties = this.context.EntityType.GetProperties();


                return(this.context);
            }