public CreateTableArgs
        (
            Expression <Func <TEntity, object> > hashKeyFieldExp,
            Expression <Func <TEntity, object> > rangeKeyFieldExp,
            LocalSecondaryIndexDefinitions <TEntity> localSecondaryIndexFieldExps,
            GlobalSecondaryIndexDefinitions <TEntity> globalSecondaryIndexFieldExps
        )
        {
            this._rangeKeyFieldExp              = rangeKeyFieldExp;
            this._localSecondaryIndexFieldExps  = localSecondaryIndexFieldExps;
            this._globalSecondaryIndexFieldExps = globalSecondaryIndexFieldExps;

            ExtractFieldNameAndTypeFromExpression(hashKeyFieldExp, out this._hashKeyFieldName, out this._hashKeyFieldType);
        }
        public CreateTableArgs
        (
            long readCapacityUnits,
            long writeCapacityUnits,
            Expression <Func <TEntity, object> > hashKeyFieldExp,
            Expression <Func <TEntity, object> > rangeKeyFieldExp,
            LocalSecondaryIndexDefinitions <TEntity> localSecondaryIndexFieldExps,
            GlobalSecondaryIndexDefinitions <TEntity> globalSecondaryIndexFieldExps,
            Func <IEnumerable <TEntity> > getInitialEntities
        )
        {
            this._readCapacityUnits             = readCapacityUnits;
            this._writeCapacityUnits            = writeCapacityUnits;
            this._rangeKeyFieldExp              = rangeKeyFieldExp;
            this._localSecondaryIndexFieldExps  = localSecondaryIndexFieldExps;
            this._globalSecondaryIndexFieldExps = globalSecondaryIndexFieldExps;
            this._getInitialEntities            = getInitialEntities;

            ExtractFieldNameAndTypeFromExpression(hashKeyFieldExp, out this._hashKeyFieldName, out this._hashKeyFieldType);
        }