gpt4 book ai didi

c# - Azure 存储表和数据迁移

转载 作者:行者123 更新时间:2023-11-30 21:46:48 27 4
gpt4 key购买 nike

是否可以重构 Azure 表存储使用的 TableEntities?例如,考虑以下实体:

class MyEntity: TableEntity
{
public string SomeID { get; set; }
}

进行重构时是否可以保留值:

  • SomeID 重命名为 SomeOtherID
  • 将属性类型从 string 更改为 Guid? (考虑到所有现有值都是实际的 GUID)

如果是,以一致的方式处理这些架构更改的推荐方法是什么(例如 EF6 的迁移)?

最佳答案

您可以探索的选项之一是使用自定义 EntityProperty解析器。

如果您将类中的属性名称从 SomeID 更改为至SomeOtherID并将具有新名称的实体插入到表存储中,您将拥有 SomeID 的实体和/或 SomeOtherID表存储中的字段。

当您查询它们时,您可以提供自定义 EntityProperty存储 SDK 将使用解析器委托(delegate)从原始属性字典创建具体实体类型。在该委托(delegate)中,您可以放入逻辑来处理这种情况,以创建您想要的实际类型。

重载的ExecuteQuery CloudTable中的方法取EntityProperty解析器:

public virtual IEnumerable<TResult> ExecuteQuery<TResult>(
TableQuery query,
EntityResolver<TResult> resolver,
TableRequestOptions requestOptions = null,
OperationContext operationContext = null
)

EntityProperty 解析器是一个委托(delegate),您可以在其中决定如何从属性字典构造强类型实体:

public delegate T EntityResolver<T>(
string partitionKey,
string rowKey,
DateTimeOffset timestamp,
IDictionary<string, EntityProperty> properties,
string etag
);

因此,在这个委托(delegate)中,您输入代码来处理带有键 SomeID 的 kvp 。和SomeOtherID在构造 T 类型返回值时。

您还可以使用相同的方法来处理类型更改。使用新架构和更改的属性类型插入,当您读回它时,在 EntityProperty 中处理这些内容。解析器。

我仍然建议将数据迁移到新的数据模型,而不是维护自定义解析器。当您处于数据迁移过程中时,自定义解析器可能会为您提供帮助,并且在该过渡阶段仍然可以处理请求。

关于c# - Azure 存储表和数据迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38991951/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com