Amazon web services DynamoDB for.net:数据模型中的表名

Amazon web services DynamoDB for.net:数据模型中的表名,amazon-web-services,amazon-dynamodb,aws-sdk,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

我正在应用程序中使用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;
我们将模型“Data”中的表名编码为

我们怎么能不硬编码呢。是否可以在实际代码中应用表名而不是在模型中给出


谢谢

您在
dynamodbooperationconfig
中查找的是
OverrideTableName

说明:

属性,该属性指示要将对象保存到的表,以覆盖 为类型声明的DynamoDBTable属性

例如:

var x = await DbContext.LoadAsync<T>("hash", new DynamoDBOperationConfig {
    OverrideTableName = "NewTableName",
    IndexName = indexName
});
return new DynamoDBContextConfig
{
   TableNamePrefix = "MyAppIdentifier",
   ConsistentRead = false,
};

另一种选择是通过为表使用不同的前缀
Amazon.DynamoDBv2.DataModel.DynamoDBContextConfig.TableNamePrefix

属性,该属性指示DynamoDBContext以特定字符串作为所有表名的前缀。>如果属性为null或空,则不使用前缀,并使用默认表名

e、 g:

    var credentials = new StoredProfileAWSCredentials("default");
    var client = new AmazonDynamoDBClient(credentials, RegionEndpoint.USEast1);
    var config = new DynamoDBContextConfig{
            TableNamePrefix = "Test."
    };

    var ctx = new DynamoDBContext(client, config);

    await ctx.SaveAsync(item);

谢谢,这很有效。目前我只有一个表,所以可能不需要一致阅读。我还有一个问题,与此不完全相关。如果你想让我打开一个新的帖子,请告诉我。我有不同的API,具有不同的端点,例如get、post、delete等。现在,因为我在这里的每个API调用中都使用了dynamo db,所以我创建了BasicAWSCredentials、AmazondynamodClient、DynamoDBContext、ScanCondition。有没有可能在我的api中创建某种高效的私有方法来初始化它,而不是重复这段代码。有关声明,请参阅我的原始帖子。不建议使用ID和密码连接。而是将它们保存在环境变量中。如果在EC2或Lambda上运行此代码,则根本不需要指定凭据。说了这句话。至于你的问题。为什么没有一个执行初始化任务的共享类呢。除此之外,DynamoDB请求是HTTP请求。多个DbContext不是系统的负载。但是建议使用Lambda在处理程序之外初始化连接,这样当Lambda被重新使用时,它们就可以使用了。但取自appsettings文件,该文件在基于环境的部署过程中会被替换。我还没有和兰姆达合作过。
return new DynamoDBContextConfig
{
   TableNamePrefix = "MyAppIdentifier",
   ConsistentRead = false,
};
    var credentials = new StoredProfileAWSCredentials("default");
    var client = new AmazonDynamoDBClient(credentials, RegionEndpoint.USEast1);
    var config = new DynamoDBContextConfig{
            TableNamePrefix = "Test."
    };

    var ctx = new DynamoDBContext(client, config);

    await ctx.SaveAsync(item);