PocoDynamo - Как мне изменить имя таблицы во время выполнения для Put и Delete

У меня уже есть таблицы, созданные в DynamoDB, и я хотел бы написать в них, используя PocoDynamo. Тем не менее, мне нужно изменить имя таблицы во время выполнения в зависимости от среды, в которой я работаю. Я могу успешно сделать это при выполнении запросов следующим образом:

    private string _environment = "dev";
    private IEnumerable<Television> Load()
    {
        var db = new PocoDynamo(_client);
        var q = db.FromQuery<Television>(q => q.Id == 1);
        Decorate(q, _environment);
        return q.Exec();
    }
    private void Decorate<TPoco>(QueryExpression<TPoco> query, string decorator)
    {
        query.TableName = $"{decorator}-{query.TableName}";
    }

Это прекрасно работает, но я не вижу, как это сделать во время выполнения с помощью Put и Delete.

Кто-нибудь знает, возможно ли это?

2 ответа

Вы также можете динамически добавить атрибут псевдонима к типу.

то есть.

entityType.AddAttributes(new AliasAttribute(alias));
db.RegisterTable(entityType);

AddAttributes происходит от ServiceStack.Text PlatformExtensions

Мне удалось разобраться с этим, изменив метаданные в регистре:

var decorator = "production";
var db = new PocoDynamo(_client);
db.RegisterTable(typeof(Television));
var metaTableData = _pocoDb.GetTableMetadata(type);
metaTableData.Name = $"{decorator}-{metaTableData.Name}";

Тогда ставь и удаляй Работай нормально:

// the following will add/delete items with table name "production-Television"
db.PutItems(televisions);
db.DeleteItems<Television>(televisionHashes);
Другие вопросы по тегам