簡體   English   中英

如何在 C# 中讀取未知類型的 ComosDB 更改提要?

[英]How to read ComosDB change feed of unknown type in C#?

我有一個 CosmosDB 容器,我想將更改源掛鈎到其中。 這個容器內部存儲了一些不同的數據結構,通常會通過數據類型標簽進行查詢。 我想根據更新的對象類型以不同的方式處理更改提要。 有沒有辦法將查詢附加到更改提要上,或者我應該嘗試將返回數據類型設置為字典還是動態?

我不知道更改提要處理器庫中有任何部分處理或查詢。

但是你可以通過路過一家做這樣JObjectChangesHandler

var changesHandler = new Container.ChangesHandler<JObject>(async (IReadOnlyCollection<JObject> collection, CancellationToken token) =>
{
   /// First deserialize just to get the type of entity/class
   var typedObject = JsonConvert.DeserializeObject<TypedObject>(doc.ToString());

   if (typedObject.DataType == "yourdatatypetohandle1")
   {
       /// Do sth. with this item
       var entity1 = JsonConvert.DeserializeObject<EntityToHandle1>();
   }
   if (typedObject.DataType == "yourdatatypetohandle2")
   {
       /// Do sth. with this item
       var entity2 = JsonConvert.DeserializeObject<EntityToHandle2>();
   }
}

使用某種模型實體/類:

public class TypedObject 
{
    public virtual string DataType { get; set; }
}

public class EntityToHandle1 : TypedObject 
{
    public override string DataType { get; set; } = "yourdatatypetohandle1";
}

public class EntityToHandle1 : TypedObject 
{
    public override string DataType { get; set; } = "yourdatatypetohandle2";
}

請注意,此解決方案從性能角度來看並不完美,因為 2x 反序列化不是最佳選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM