首页 > 解决方案 > PocoDynamo - 使用现有表

问题描述

假设我在 DynamoDB 中有一个已经存在的表,我如何将它注册到 PocoDynamo

“SomeTable”类型指向 prod 和 stg 环境中的不同表。有没有办法用表名注册类型或以其他方式设置表名。

_pocoClient.PutItem<SomeTable>(item)

有没有办法将现有表与 PocoDynamo 一起使用?

注意:我使用 terraform 创建表,不想使用 PocoDynamo 创建基础设施。

标签: amazon-dynamodbservicestackpocodynamo

解决方案


PocoDynamo 中,您只需要调用PocoDynamoRegisterTable来“注册”表及其架构,即:

db.RegisterTable<SomeTable>();

您可以通过以下方式注册表,以编程方式更改表名(在调用 InitSchema() 之前启动时):

var metadata = DynamoMetadata.RegisterTable<SomeTable>();
metadata.Name = "DbTableName";

注册和配置表后,调用InitSchema只会创建不存在的表:

db.InitSchema();

如果您希望 DynamoDB 表的名称与 .NET 类型名称不同,您可以使用Alias 属性,例如:

[Alias("DbTableName")]
public class SomeTable
{
    //..
}

注意:PocoDynamo 是一个代码优先类型化的 .NET 客户端,这意味着它期望 DynamoDB 表完全按照它的创建方式创建,它对于映射到使用不同约定生成的现有表没有用处。


推荐阅读