我有一个具有以下属性的实体
公共字符串ID {get; set;} 公共对象有效载荷{get; set;}
这用于在给定实体上保存不同类型的对象。因此,实体在属性上可以具有PayloadA类型和PayloadB类型(没有基类)。
我正在尝试将其保存到CosmosDB。 当我使用CosmosClient而不是EF时,我得到以下文档结构(请注意,有效负载按原样进行了序列化,您可以查询其属性:
{
"id": "3ead3cbd-88de-4f0c-a0b8-05f77465c247",
"Payload": {
"Property1": "0cd89dd5-0eee-4351-8e91-5e72432b0fe2"
},
"_rid": "5NIOAJz8J98rLQAAAAAAAA==",
"_self": "dbs/5NIOAA==/colls/5NIOAJz8J98=/docs/5NIOAJz8J98rLQAAAAAAAA==/",
"_etag": "\"9101c348-0000-0d00-0000-5f48f3ae0000\"",
"_attachments": "attachments/",
"_ts": 1598616494
}
当我使用实体框架时,出现错误,因为找不到转换(递归错误)。如果我将HasConversion()与JSon序列化转换一起使用,则我的文档中的有效负载属性将被视为字符串,因为它已被序列化。
{Payload: "{\"GroupKey\":\"26f65281-b527-44ab-8aed-f1ef6c53ae2a\"}
这使我无法查询Cosmos。
有什么办法可以按原样存储system.object拥有的实体及其属性?