首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用对象持久化模型动态更改c#中的dynamodb表名

如何使用对象持久化模型动态更改c#中的dynamodb表名
EN

Stack Overflow用户
提问于 2017-05-18 08:59:04
回答 3查看 4.2K关注 0票数 9

我正在使用dynamodb 对象持久性模型.

代码语言:javascript
运行
复制
DynamoDBTable("mydynamodbtablename")]
public class mytable
{
  ....
}

现在的问题是,如果我试图使表的名称在运行时动态更改(我通过配置文件获得表名),则会出现错误。

代码语言:javascript
运行
复制
var Table_Name = Config.GetTableName();
DynamoDBTable(Table_Name)]
public class mytable
{
  ....
}

错误:属性参数必须是属性参数类型xxx的常量表达式、类型表达式或数组创建表达式。

是否有一种方法(简单的方法)使我仍然可以使用DDB对象持久性模型并使表名为动态?

更新:

我似乎没有清楚地提到ddb持久性模型。这是正式文档http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/CRUDHighLevelExample1.html

下面是一个示例,说明在实际应用中如何使用对象持久性模型

代码语言:javascript
运行
复制
var records = await context.LoadAsync<mytable>(somekey);
foreach(var item in records)
{
   ....
}
EN

回答 3

Stack Overflow用户

发布于 2017-06-15 09:33:52

使用接受LoadAsync<T>DynamoDBOperationConfig方法的重载

代码语言:javascript
运行
复制
var config = new DynamoDBOperationConfig 
{ 
    OverrideTableName = "MyTableName"
};
var records = await context.LoadAsync<mytable>(somekey, config);
foreach(var item in records)
{
   ....
}
票数 23
EN

Stack Overflow用户

发布于 2019-07-11 13:33:10

如果您想为整个应用程序(我猜就是这样,因为您提到配置文件),您应该使用过载的DynamocDBContext,它需要一个DynamoDBContextConfig。例如,在dotnet核心中,您可以这样做:

代码语言:javascript
运行
复制
services.AddTransient<IDynamoDBContext>(c => new 
DynamoDBContext(c.GetService<IAmazonDynamoDB>(),
                new DynamoDBContextConfig 
                { 
                    TableNamePrefix = Configuration.GetValue("MyEnvironment", "unspecified")  + "-" 
                }));
票数 4
EN

Stack Overflow用户

发布于 2017-05-18 09:24:08

文档模型上的主要类是TableDocumentTable类具有不同的API来执行数据库操作(PutItem、GetItem、DeleteItem)。

使用LoadTable API加载表时,可以设置TableConfig以覆盖表名值。

代码语言:javascript
运行
复制
public Table LoadTable(
         IAmazonDynamoDB ddbClient,
         TableConfig config
)

API接受TableConfig参数。TableConfig类具有重写表名的方法。

代码语言:javascript
运行
复制
Amazon.DynamoDBv2.DocumentModel.TableConfig 
TableName

示例:-

您可以在tableName对象上设置tableConfig。

代码语言:javascript
运行
复制
// Set up the Table object
var tableConfig = new TableConfig("tableName");
Table table = Table.LoadTable(client, tableConfig);
Document document = table.GetItem(101); // Primary key 101.
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44043148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档