我正在使用dynamodb 对象持久性模型.
DynamoDBTable("mydynamodbtablename")]
public class mytable
{
....
}现在的问题是,如果我试图使表的名称在运行时动态更改(我通过配置文件获得表名),则会出现错误。
var Table_Name = Config.GetTableName();
DynamoDBTable(Table_Name)]
public class mytable
{
....
}错误:属性参数必须是属性参数类型xxx的常量表达式、类型表达式或数组创建表达式。
是否有一种方法(简单的方法)使我仍然可以使用DDB对象持久性模型并使表名为动态?
更新:
我似乎没有清楚地提到ddb持久性模型。这是正式文档http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/CRUDHighLevelExample1.html
下面是一个示例,说明在实际应用中如何使用对象持久性模型
var records = await context.LoadAsync<mytable>(somekey);
foreach(var item in records)
{
....
}发布于 2017-06-15 09:33:52
使用接受LoadAsync<T>的DynamoDBOperationConfig方法的重载
var config = new DynamoDBOperationConfig
{
OverrideTableName = "MyTableName"
};
var records = await context.LoadAsync<mytable>(somekey, config);
foreach(var item in records)
{
....
}发布于 2019-07-11 13:33:10
如果您想为整个应用程序(我猜就是这样,因为您提到配置文件),您应该使用过载的DynamocDBContext,它需要一个DynamoDBContextConfig。例如,在dotnet核心中,您可以这样做:
services.AddTransient<IDynamoDBContext>(c => new
DynamoDBContext(c.GetService<IAmazonDynamoDB>(),
new DynamoDBContextConfig
{
TableNamePrefix = Configuration.GetValue("MyEnvironment", "unspecified") + "-"
}));发布于 2017-05-18 09:24:08
文档模型上的主要类是Table和Document。Table类具有不同的API来执行数据库操作(PutItem、GetItem、DeleteItem)。
使用LoadTable API加载表时,可以设置TableConfig以覆盖表名值。
public Table LoadTable(
IAmazonDynamoDB ddbClient,
TableConfig config
)API接受TableConfig参数。TableConfig类具有重写表名的方法。
Amazon.DynamoDBv2.DocumentModel.TableConfig
TableName示例:-
您可以在tableName对象上设置tableConfig。
// Set up the Table object
var tableConfig = new TableConfig("tableName");
Table table = Table.LoadTable(client, tableConfig);
Document document = table.GetItem(101); // Primary key 101.https://stackoverflow.com/questions/44043148
复制相似问题