gpt4 book ai didi

c# - 将通用对象写入 Azure 存储的示例?

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

假设我有多个继承自 TableEntity 的实体。

我想使用通用类,如缓存管理器,并写入不同 T 的天蓝色存储

下面这个链接提到了 TableEntityAdapter

https://learn.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.table.tableentityadapter-1.-ctor?view=azure-dotnet

我正在寻找代码示例。谢谢,彼得

最佳答案

我写了 TableEntityAdapter 类,所以我会尝试提供使用示例,虽然我看到问题是一个月前提出的,但希望它仍然有用。

先看看SDK的单元测试是怎么测试的: https://github.com/Azure/azure-storage-net/blob/master/Test/ClassLibraryCommon/Table/TableOperationUnitTests.cs

搜索 TableEntityAdapter 找到相关测试。注意单元测试当然不会写入实际的表存储服务,它们模拟你在 api 调用方面读写时会发生什么,但它们应该给你一个很好的想法。

您的原始 ShapeEntity 对象甚至不需要实现 ITableEntity 接口(interface)。它还可以包含复杂的嵌套属性。 TableEntityAdapter 类支持这些场景。

下面是 TableEntityAdapter 的简化示例代码:

将您的自定义 .Net 对象写入表存储:

      // 1. ShapeEntity is the custom .Net object that we want to write and read from Table Storage.
ShapeEntity shapeEntity = new ShapeEntity(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "square", 4, 4);

OperationContext operationContext = new OperationContext();
// 2. Instantiate a TableEntityAdapter object, passing in the custom object to its constructor. Internally this instance will keep a reference to our custom ShapeEntity object.

TableEntityAdapter<ShapeEntity> writeToTableStorage = new TableEntityAdapter<ShapeEntity>(shapeEntity, partitionKey, rowKey);

// 3. Now you can write the writeToTableStorage object to Table Storage just like any other object which inherits from ITableEntity interface. The TableAdapter generic class handles the boiler plate code and hand shaking between your custom .Net object and table storage sdk / service.

To read your custom object from Table Storage:

// 1. Read your entity back from table storage using the same partition / row key you specified (see step 2 above). You can use the Retrieve<T> table operation, specify T as TableEntityAdapter<ShapeEntity>

// 2. This should return you the TableEntityAdapter<ShapeEntity> object that you wrote to TableStorage at step 3 above.

// 3. To access the original ShapeEntity object, just refer to the OriginalEntity property of the returned TableEntityAdapter<ShapeEntity> object.

您的原始 ShapeEntity 对象甚至不需要实现 ITableEntity 接口(interface)。它还可以包含复杂的嵌套属性。 TableEntityAdapter 类支持这些场景。

注意: TableEntityAdapter api 不支持具有集合类型属性的对象,即。 List, Array, IEnumerable, ICollection

如果您的对象包含这些类型的属性(直接在根下或对象图中的某处),那么您应该考虑使用我编写的原始 Nuget 包,它也支持集合类型的属性类型。

ObjectFlattenerRecomposer 支持Collection、Enumerable类型属性的2.0版API: https://www.nuget.org/packages/ObjectFlattenerRecomposer/

以及最近上传的.Net Core版本: https://www.nuget.org/packages/ObjectFlattenerRecomposer.Core/1.0.0/

关于c# - 将通用对象写入 Azure 存储的示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47044207/

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