使用存储库模式将动态表实体写入 Azure 表存储时出现问题

本文关键字:存储 Azure 问题 实体 模式 动态 | 更新日期: 2024-11-08 09:51:45

>CONTEXT:

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

目前,我正在使用存储库模式与我的(非动态)表实体交互/创建表。在存储库构造函数中,我使用以下行:

Table

= TableClient.GetTableReference(typeof(TEntity).姓名);
Table.CreateIfNotExists();

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

问题:

如果表存储的名称派生自提供的 TEntity.Name,并且 DynamicTableEntity 是无法继承的密封类,则无法为 Azure 表指定名称。任何使用DynamicTableEntity的最终都会使用名为"DynamicTableEntity"的同一张表。

你能想到我可以指定一个表名吗?我已经考虑过将DynamicTableEntity包装在一个类中以及查看属性

使用存储库模式将动态表实体写入 Azure 表存储时出现问题

在将

强类型实体转换为 DynamicTableEntity 的组件中,可以使用相同的值 (typeof(TEntity) 向 DynamicTableEntity 添加 Name 属性。名称)。然后,可以使用此 Name 属性的值来确定表。

在反向转换中,如果要将动态表实体转换回强类型,则可以去除该 Name 属性。

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