内容:

我的目标是在Azure表存储中拥有几个DynamicTableEntity,它们具有各自的表。这样,实体可以在系统需要时动态地添加字段。

当前,我正在使用存储库模式来为我的(非动态)TableEntities与表建立接口。在存储库构造函数中,我使用以下几行:


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


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

问题:

我的表存储的名称是从提供的TEntity.Name派生的,而DynamicTableEntity是无法继承的密封类,则无法为我的Azure表指定名称。对DynamicTableEntity的任何使用最终都将使用称为“ DynamicTableEntity”的同一表。

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

最佳答案

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

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

您可能还希望将该名称与表引用映射一起放入Web config / app config文件中。

07-24 21:36