使用存储库模式向Azure表存储写入DynamicTableEntity的问题

时间:2015-03-09 16:53:01

标签: c# .net azure repository-pattern azure-table-storage

背景:

我的目标是让一些DynamicTableEntity在Azure表存储中拥有各自的表。这样,如果系统需要,实体可以动态地添加字段。

目前我使用存储库模式与我的(非动态)TableEntities接口/ create table。在存储库构造函数中,我使用以下行:

  

Table = TableClient.GetTableReference(typeof(TEntity).Name);
  Table.CreateIfNotExists();

要获取实体各自的表,如果它尚不存在,请使用提供的TEntity名称创建它。 (TEntity被限制为ITableEntity)。

ISSUE:

如果我的表存储的名称是从提供的TEntity.Name派生的,而DynamicTableEntity是一个无法继承的密封类,我无法为我的azure表指定名称。任何对DynamicTableEntity的使用最终都会使用名为" DynamicTableEntity"的相同表格。

无论如何我能想到我可以指定一个表名。我考虑过将DynamicTableEntity包装在一个类中以及查看属性

1 个答案:

答案 0 :(得分:0)

在将强类型实体转换为DynamicTableEntity的组件内,可以使用相同的值(typeof(TEntity).Name)将Name属性添加到DynamicTableEntity。然后,您可以使用此Name属性的值来决定表。

在反向转换中,如果要将DynamicTableEntity转换回强类型,则可以删除该Name属性。

您可能还希望将该名称放入表引用映射到Web配置/应用程序配置文件中。