实体框架核心Cosmos DB系统。对象映射

时间:2020-08-28 13:52:42

标签: entity-framework-core azure-cosmosdb

我有一个具有以下属性的实体

公共字符串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拥有的实体及其属性?

0 个答案:

没有答案