上下文:
我的目标是拥有几个 DynamicTableEntity,它们在 Azure 表存储中拥有各自的表。这样,如果系统需要,实体可以动态地精细地添加字段。
目前,我正在使用存储库模式与我的(非动态)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 配置/应用程序配置文件中。
关于c# - 使用存储库模式将 DynamicTableEntity 写入 Azure 表存储时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28947558/