gpt4 book ai didi

c# - 使现有实体实现 TableEntity

转载 作者:行者123 更新时间:2023-11-30 22:10:25 25 4
gpt4 key购买 nike

我正在尝试为 Azure 表存储创建通用 CRUD 服务。

过去,我一直将 SQL 与 Entity Framework 的存储库/工作单元模式结合使用。我希望使用 Azure 表存储实现同样的功能,但我看到的所有示例都要求我的实体从 Azure 库实现 TableEntity。

但是对我来说,这与 SOLID 原则相冲突 - 因为我的存储库和模型不需要了解 Azure 才能工作。

所以我想要的是一个我也传递实体的服务,并且该服务可以更改所述类以使其实现 TableEntity,从而允许我运行通常的 TableStorage CRUD 操作,将其映射回我的实体类并返回它。

最佳答案

我编写了一个通用 API,它通过使用递归反射展平复杂对象来实现从任何复杂对象到 EntityProperty 字典的转换。然后,您可以将实体属性字典作为 DynamicTableEntity 写入 Azure 表存储。

当您读取 DynamicTableEntity 时,API 会转换回复杂对象。

此 API 的强大之处在于它适用于任何具有嵌套属性的复杂对象,而这些对象本身也可能是具有其他嵌套属性的复杂对象。

欢迎查看并使用:) https://www.nuget.org/packages/ObjectFlattenerRecomposer/

用法:

//Flatten object of type Order) and convert it to EntityProperty Dictionary
Dictionary<string, EntityProperty> flattenedProperties = ObjectFlattenerRecomposer.Flatten(order);

// Create a DynamicTableEntity and set its PK and RK
DynamicTableEntity dynamicTableEntity = new DynamicTableEntity(partitionKey, rowKey);

dynamicTableEntity.Properties = flattenedProperties;

// Write the DynamicTableEntity to Azure Table Storage using client SDK


//Read the entity back from AzureTableStorage as DynamicTableEntity using the same PK and RK

DynamicTableEntity entity = [Read from Azure using the PK and RK];

//Convert the DynamicTableEntity back to original complex object.
Order order = ObjectFlattenerRecomposer.ConvertBack<Order>(entity.Properties);

就这些了:)

关于c# - 使现有实体实现 TableEntity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20830178/

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