c# - 使用存储库模式将 DynamicTableEntity 写入 Azure 表存储时出现问题

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

上下文:

我的目标是拥有几个 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/

相关文章:

azure - Windows Azure 网站的 SSL 证书

c# - Interlocked.Exchange<T> 比 Interlocked.CompareExchange<T> 慢?

c# - 使用 SerialPort 禁用 EOF (0x1A)

c# - 如何通过 Azure Batch 使用 Key Vault 进行身份验证

c# - 从 DbDataReader 读取数据最快的方法是什么?

azure - 虚拟机网络

c# - 将日期格式从 dd/MM/yyyy 更改为 MM/dd/yyyy

.net - ASP.NET 代理应用程序

c# - .NET HashSet 的内部实现包含方法?

azure - CloudBlobContainer CreateIfNotExistsAsync 与 CreateIfNotExists