ScalarDB Cluster .NET Client SDK での LINQ をはじめよう
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
ScalarDB Cluster .NET Client SDK は、LINQ と Entity Framework のような機能を使用してクラスターをクエリすることをサポートしています。
この SDK は Entity Framework をサポートしていません。代わりに、この SDK は Entity Framework に似た機能を実装します。
LINQ を使用するには、クラスターで SQL サポートを有効にする必要があります。
SDK をインストールする
ScalarDB Cluster と同じメジャーバージョンとマイナーバージョンの SDK を .NET プロジェクトにインストールします。組み込みの NuGet パッケージマネージャーを使用してこれを行うことができます。<MAJOR>.<MINOR>
を、使用しているバージョンに置き換えます。
dotnet add package ScalarDB.Client --version '<MAJOR>.<MINOR>.*'
クライアント設定の追加
ASP.NET Core アプリの appsettings.json
ファイルに ScalarDbOptions
セクションを追加し、<HOSTNAME_OR_IP_ADDRESS>
を FQDN または IP アドレスに、<PORT>
をクラスターのポート番号 (デフォルトでは 60053
) に置き換えます。
{
"ScalarDbOptions": {
"Address": "http://<HOSTNAME_OR_IP_ADDRESS>:<PORT>",
"HopLimit": 10
}
}
設定ファイルやクライアントを設定するその他の方法の詳細については、クライアント設定を参照してください。
クラスを設定する
SQL サポートが有効になっていることを確認したら、使用する ScalarDB テーブルごとに C# クラスを作成します。例:
using System.ComponentModel.DataAnnotations.Schema;
using ScalarDB.Client.DataAnnotations;
// ...
[Table("ns.statements")]
public class Statement
{
[PartitionKey]
[Column("statement_id", Order = 0)]
public int Id { get; set; }
[SecondaryIndex]
[Column("order_id", Order = 1)]
public string OrderId { get; set; } = String.Empty;
[SecondaryIndex]
[Column("item_id", Order = 2)]
public int ItemId { get; set; }
[Column("count", Order = 3)]
public int Count { get; set; }
}
[Table("order_service.items")]
public class Item
{
[PartitionKey]
[Column("item_id", Order = 0)]
public int Id { get; set; }
[Column("name", Order = 1)]
public string Name { get; set; } = String.Empty;
[Column("price", Order = 2)]
public int Price { get; set; }
}
パーティションキー、クラスタリングキー、またはセカンダリインデックスが複数の列で設定されている場合、ColumnAttribute
の Order
プロパティによってキーまたはインデックス内の順序が決まります。
プロパティに使用する型の詳細については、ScalarDB 列型と .NET 型間の変換方法 を参照してください。
すべてのクラスが作成されたら、作成されたコンテキストを依存性注入コンテナに登録する必要があります。例:
public class MyDbContext: ScalarDbContext
{
public ScalarDbSet<Statement> Statements { get; set; }
public ScalarDbSet<Item> Items { get; set; }
}