2017-12-07 5 views
1

私のオブジェクトをcosmos dbにアップアップするときに、オブジェクトタイプをjsonオブジェクトの一部として保存したい。 Cosmos Clientのインスタンスをインスタンス化するときにjsonシリアライザを渡そうとしましたが、動作しません。私はまだ文書の中にオブジェクトのタイプを見ません。最初の(jオブジェクトにオブジェクトを変換する)前処理なしで、そのような行動を持っているCosmos DB:オブジェクトタイプをドキュメント内のプロパティとして保存する

public static readonly JsonSerializerSettings DefaultJsonSerializerSettings = 
     new JsonSerializerSettings 
     { 
      TypeNameHandling = TypeNameHandling.All, 
      DateFormatString = "o", 
      DateFormatHandling = DateFormatHandling.IsoDateFormat, 
     }; 

    var CosmosClient = 
      new DocumentClient(
       new Uri(CosmosConfig.ServiceEndpoint), 
       CosmosConfig.AuthNKey, 
       DefaultJsonSerializerSettings, 
       connectionPolicySettings); 

その他の方法:私が何をしようとしていた何 ? おかげ

UPD:

私がachiveしようとすると、私の文書(automaticalyシリアル化されたタイプ)で、次の構造のようになめらかである:

{ 
     "$type" : "MyNamespace.Foo", 
     "Id": "1560e1be-bf87-4720-a22e-b7e2c4c37f2e", 
     "Name" : "Vasia" 
    } 

の代わりに、このような現在の1(なしタイプ):

{ 
     "Id": "1560e1be-bf87-4720-a22e-b7e2c4c37f2e", 
     "Name" : "Vasia" 
    } 

答えて

1

私のあなたは、顧客、売り手などのようなエンティティのタイプを認識したいと言っていると言います。

もしそうなら、Cosmos DBはスキーマの少ないデータベースなので、Customerなどのフォーマットでは使用できないことをお知らせしたいと思います。あなたが本当にCosmos DBのオブジェクトのタイプを認識する必要がある場合は、DocumentDB内のすべてのオブジェクトが保存されるため、保存するオブジェクトまたはエンティティにType = "Customer"またはType = "Employee"のようなプロパティを追加する必要がありますJSONと同様の形式であり、SQLのようにCustomer/Employeeの表のような概念はありません。

いけない

+0

...それはあなたを助けている場合私の答えをマークすることを忘れて、私はそれ自動生成およびデシリアライズに使用して持つことができますか?ありがとう –

+0

Cosmos dbでは、エンティティのタイプを表すTypeのようなエンティティにもう1つのプロパティを追加する必要がありますので、自動生成できません。 idと "SecurityStamp"、 "TwoFactorEnabled"、 "_rid"、 "_self"などの他のフィールドのみ。エンティティタイプではなく、cosmos dbによって自動生成されます。 –

関連する問題