DynamoDB for .net:数据模型中的表名称

use*_*677 2 amazon-web-services amazon-dynamodb aws-sdk

我在我的应用程序中使用 Dynamodb.net。

我有以下代码。

var creds = new BasicAWSCredentials(awsId, awsPassword);
var dynamoClient = new AmazonDynamoDBClient(creds, 
awsDynamoDbRegion);
var context = new DynamoDBContext(dynamoClient);
List<ScanCondition> conditions = new List<ScanCondition>();
conditions.Add(new ScanCondition("Id", ScanOperator.Equal, myId));            
var response = await context.ScanAsync<Data>(conditions).GetRemainingAsync();
return response;
Run Code Online (Sandbox Code Playgroud)

我的数据模型如下:

[DynamoDBTable("MyTable")]
public class Data
{
     [DynamoDBHashKey]
    public string Id{ get; set; }
    public string Name { get; set; }
 }
Run Code Online (Sandbox Code Playgroud)

我们将模型“数据”中的表名称编码为

 [DynamoDBTable("MyTable")]
Run Code Online (Sandbox Code Playgroud)

我们怎么能不对此进行硬编码呢?是否可以在我的实际代码本身中应用表名称,而不是在模型中给出?

谢谢

Can*_*hin 5

是您要找的吗OverrideTableNameDynamoDBOperationConfig

描述:

指示用于保存对象的表以覆盖为该类型声明的 DynamoDBTable 属性的属性。

例子:

var x = await DbContext.LoadAsync<T>("hash", new DynamoDBOperationConfig {
    OverrideTableName = "NewTableName",
    IndexName = indexName
});
Run Code Online (Sandbox Code Playgroud)

此外,您正在寻找的可能是 DbContext 每个请求的表前缀。它将将此前缀附加到每个表中。如果您想隔离应用程序特定的表(例如 AppName-MyTable),这很有用...

例子:

return new DynamoDBContextConfig
{
   TableNamePrefix = "MyAppIdentifier",
   ConsistentRead = false,
};
Run Code Online (Sandbox Code Playgroud)