ScalarDB Cluster .NET Client SDK で C# クラスとしてテーブルをはじめよう
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
ScalarDB Cluster .NET Client SDK は、ScalarDB テーブルを C# オブジェクトとして抽象化することで、クラスターにアクセスするコードの作成に役立ちます。クラスター内のテーブルを表すクラスを定義すると、クラスターをクエリすると きに列名やその型が混同されないようにすることができます。さらに、テーブルの構造が変更された場合は、IDE のリファクタリング機能を使用してコードに変更を適用できます。
次の例のように非同期メソッドを使用することをお勧めしますが、代わりに同期メソッドを使用することもできます。
SDK をインストールする
ScalarDB Cluster と同じメジャーバージョンとマイナーバージョンの SDK を .NET プロジェクトにインストールします。組み込みの NuGet パッケージマネージャーを使用してこれを行うことができます。<MAJOR>.<MINOR>
を、使用しているバージョンに置き換えます。
dotnet add package ScalarDB.Client --version '<MAJOR>.<MINOR>.*'
すべての ScalarDB テーブルのクラスを作成する
ScalarDB テーブルを C# オブジェクトとして操作するには、使用するテーブルごとにクラスを作成する必要があります。例:
using System.ComponentModel.DataAnnotations.Schema;
using ScalarDB.Client.DataAnnotations;
// ...
[Table("ns.statements")]
public class Statement
{
[PartitionKey]
[Column("order_id", Order = 0)]
public string OrderId { get; set; } = String.Empty;
[ClusteringKey]
[Column("item_id", Order = 1)]
public int ItemId { get; set; }
[Column("count", Order = 2)]
public int Count { get; set; }
}
プロパティに使用する型の詳細については、ScalarDB 列型と .NET 型間の変換方法を参照してください。
CRUD 操作を実行する
各テーブルのクラスを作成した後、ITransactionCrudOperable
の汎用 GetAsync
、ScanAsync
、InsertAsync
、UpdateAsync
、DeleteAsync
、UpsertAsync
、または MutateAsync
メソッドを使用して、クラスをオブジェクトとして使用できます。
これらの汎用メソッドを使用するには、using
セクションに次の名前空間を追加します 。
using ScalarDB.Client.Extensions;
GetAsync
メソッドを使用して 1 つのオブジェクトを取得します
var keys = new Dictionary<string, object>
{
{ nameof(Statement.OrderId), "1" }
};
var statement = await transaction.GetAsync<Statement>(keys);
Console.WriteLine($"ItemId: {statement.ItemId}, Count: {statement.Count}");
ScanAsync
メソッドを使用して複数のオブジェクトを取得する
var startKeys = new Dictionary<string, object>
{
{ nameof(Statement.OrderId), "1" },
{ nameof(Statement.ItemId), 3 }
};
var endKeys = new Dictionary<string, object>
{
{ nameof(Statement.ItemId), 6}
};
await foreach (var s in transaction.ScanAsync<Statement>(startKeys, endKeys))
Console.WriteLine($"ItemId: {s.ItemId}, Count: {s.Count}");
IAsyncEnumerable<T>
で LINQ メソッドを使用するには、System.Linq.Async パッケージをインストールします。