内容:
我的目标是在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文件中。