Pandora Pocket

IT系と日常系の備忘録。三日坊主。

AzureFunctionsv3でCosmosDBを用いるためのサンプルコード. Contribute to Ovis/AzureFunctionsCosmosDBSample development by creating an account on GitHub.
[はてなブックマークで表示]

せっかくAzureでCosmosDBの無料枠ができたので、使わない手はないなと思って基本的な挙動確認用のプロジェクトを作成してみました。

CosmosDBのデータベース、コンテナ作成から登録更新検索削除の一通りの基本処理をAzure Functionsのv3環境で実装しています。

学習がてらDI実装。Azure CosmosDB Emulator をインストールすればローカル実行可能です(というよりはまだAzure上で確認してない)。

あくまでサンプルなので異常系の対応とかは特に入ってません。

余談

当初せっかくv3環境なのでNewtonsoft.Jsonを用いず、System.Text.Jsonを利用しようと考えていたのですが、うまくいかず断念しました。
プロパティ名は頭を大文字にするため、Newtonsoft.Jsonだと JsonProperty を用いて別名を指定するわけですが、同じ挙動をするはずのSystem.Text.Jsonの JsonPropertyName だと

The input content is invalid because the required properties - 'id; ' - are missing

というエラーが出てしまい実行に失敗してしまいます。
どうもCosmosDBのv3SDKはまだNewtonSoft.Jsonにがっつり依存しているため、System.Text.Jsonを使いたいならv4までまて、ということのようです。

Describe the bug Several Microsoft samples for Cosmos DB and .NET Core use Newtonsoft.Json.JsonPropertyAttribute to rename the Id property on a model to id. In .NET Core and ASP.NET Core, Newtonsof...
[はてなブックマークで表示]

余談の追記

Version 3.1.2からSerializerOptionsでcamelCase指定ができるようになってたようです。
これを設定しておけばそもそもJsonPropertyの指定も不要ですね。

Pull Request Template Description This PR will help fixing issue where LINQ query generation was not entertaining the camel case option passed as serialization option during client creation. So the...
[はてなブックマークで表示]

参考サイト

5 月の Build で月末 GA が発表されていた Azure Cosmos DB の .NET SDK v3 ですが、昨日ついに正式版がリリースされました。特に Public Preview の時からは API が大きく変わっているので注意です。元は JavaScript SDK に近い API でしたが、途中で大幅に変更されています。そして Cosmos DB チームがセマンティックバージョンをミスったようで、プレビュー版の NuGet パッケージをインストールしていると、正式版が更新対象として出てこないので更に注意が必要です。新しい v3 SDK の特徴としては .NET Standa…
[はてなブックマークで表示]

はじめに Azure Functio v2のDIサポートが少しづつ進んでいて、 コンストラクタインジェクションが出来るようになっています。 azure-functions-host issue #3736 Dependenc...
[はてなブックマークで表示]

既定値Gatewayモードの最大コネクション数:50リクエストタイムアウト:60秒コネクションモード:Direct接続プロトコル:TCPオプションクラス「CosmosClientO...
[はてなブックマークで表示]