2017-09-20 18 views
0

documentDbに文書を挿入したい。これは、ドキュメントを挿入する前にカスタムidプロパティを追加していないときにうまくいきます。Azure Cosmos/DocumentDBの問題、カスタムidプロパティを設定するとき

foreach (dynamic doc in docs) 
{ 
    if (doc != null) 
    { 

     doc.id = Convert.ToString(doc.myCustomId); // myCustomId is an integer 
     var addedDoc = await dbClient.UpsertDocumentAsync(collectionUri, doc); 
     addedDocuments.Add(addedDoc); 
    } 
} 

Iはdoc.id =を削除する場合>文書がIDとしてGUIDが付加されています。

エラーは次のとおりです。「アレイを文字列に変換できません。

" bei Newtonsoft.Json.Linq.JToken.op_Explicit(JToken value)\r\n bei Newtonsoft.Json.Linq.JToken.ToObject(Type objectType)\r\n bei Newtonsoft.Json.Linq.JToken.ToObject[T]()\r\n bei Microsoft.Azure.Documents.JsonSerializable.GetValue[T](String propertyName)\r\n bei Microsoft.Azure.Documents.Resource.get_Id()\r\n bei Microsoft.Azure.Documents.Client.DocumentClient.ValidateResource(Resource resource)\r\n 

コードは、あなたが9.0.1よりも高いNewtonsoft.Jsonのバージョンを使用する場合、このエラーが発生する可能性がありますAzureの機能に

+1

Newtonsoft.JsonとDocumentDb Nugetパッケージのどのバージョンを使用していますか?私はこれがバージョンの不一致に関連する問題かもしれないと思う。 – brettsam

+0

doc.myCustomIdの値は何ですか? –

+0

@brettsam newtonsoftのバージョンは10.0.3で、プロジェクトのすべてのdepsをチェックしており、すべてのnugetパッケージは同じバージョンを参照しています。10.0.3 –

答えて

1

を実行します。すべてのバージョンをそのバージョンに戻して、それが動作するかどうか確認してください。また、安全のためにDocumentDBパッケージ1.13.2を使用することをお勧めします。

これは、ホストがこれらのパッケージの特定のバージョンに対してコンパイルされているために発生します。新しいバージョンを使用しようとすると、このような微妙なブレークが発生する可能性があります。これに対処する方法の詳細については、https://github.com/Azure/azure-webjobs-sdk-script/issues/992を参照してください。

+0

ありがとうございました。これは問題であり、動的オブジェクトを定義済みのC#オブジェクトにシリアル化してからドキュメントDBに追加するときに機能するため、実際は奇妙です。 –

関連する問題