Cosmos db 强类型 ID

时间:2021-03-07 06:56:01

标签: c# azure-cosmosdb

有可能以某种方式将 id 设置为对象吗?

这是示例代码

6V0iIqu3smGmadPK4KvRuHm1nNkuIVLBPbLg7VkA7M8=

3 个答案:

答案 0 :(得分:0)

<块引用>

有可能以某种方式将 id 设置为对象吗?

AFAIK,答案是否定的。文档的 id 属性必须是 string 类型。

从此link

enter image description here

答案 1 :(得分:0)

是的,可以做到,如果你像这样声明MovieId,你可以像传递一个类对象一样思考。

public record MovieId
{
    Guid _id;
    public MovieId(Guid id)
    {
        _id = id;
    }
} 

答案 2 :(得分:0)

好的,我做了一些研究,找到了解决我的问题的方法,感谢大家的帮助

  [JsonConverter(typeof(IdConverter))]
    public record BaseId(Guid Value);
    public class IdConverter : JsonConverter
    {
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var id = (BaseId)value;
            serializer.Serialize(writer, id.Value);
        }

        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var guid = serializer.Deserialize<Guid>(reader);
            return new BaseId(guid);
        }

        public override bool CanConvert(Type objectType)
        {
            return objectType == typeof(BaseId);
        }
    }