使用Azure.Data.Tables
12.3.0 并尝试保存以下示例模型时出现错误:
System.NotSupportedException:Azure.Data.Tables.TableRestClient.CreateInsertEntityRequest (String表,可空超时,可空 responsePreference,IDictionary tableEntityProperties,QueryOptions queryOptions)
PersistedPerson.cs
class PersistedPerson
{
string Name { get; init; }
Dictionary<Guid, Guid> SomeDictionary { get; init; } = new();
}
为了保存实体,我正在创建它并将其传递到我的存储库中,在该存储库中创建 TableClient 并保存实体,如下所示:
var tableClient = new TableClient(tableStorageConfiguration.ConnectionString, tableName);
await tableClient.AddEntityAsync(persistedModel, cancellationToken);
Microsoft.Azure.Cosmos
与 Cosmos DB(模拟器和服务)一起使用时,我可以毫无问题地保存此对象。我尝试过使用 Azure Storage Emulator 5.1.0 和 Azure Table Storage(在线)。字典中使用什么数据类型似乎也无关紧要。我犯了同样的错误。
有什么建议么?我找不到很多关于这个库有什么序列化支持的信息。看起来它正在使用某种 JSON 编写器进行序列化,并且我已验证System.Text.Json
支持。
[更新] 交换库和底层实现确实解决了这个问题。在 CosmosDb (SQL) 中运行良好,但在 CosmosDb 表中运行良好。