メニュー
Amazon DynamoDB
開発者ガイド (API バージョン 2012-08-10)

DynamoDB の属性

このセクションでは、クラスとプロパティを DynamoDB のテーブルや属性にマッピングできるように、オブジェクト永続性モデルで使用できる属性を示します。

注記

次の属性では、DynamoDBTableDynamoDBHashKey だけが必須です。

DynamoDBGlobalSecondaryIndexHashKey

グローバルセカンダリインデックスのパーティションキーにクラスプロパティをマッピングします。この属性は、グローバルセカンダリインデックス の Query を実行する必要がある場合に使用します。

DynamoDBGlobalSecondaryIndexRangeKey

グローバルセカンダリインデックスのソートキーにクラスプロパティをマッピングします。この属性は、グローバルセカンダリインデックスの Query を実行し、インデックスソートキーを使用して結果を絞り込む必要がある場合に使用します。

DynamoDBHashKey

テーブルのプライマリキーのパーティションキーにクラスプロパティをマッピングします。プライマリキーの属性をコレクション型にすることはできません。

次の C# コード例では、Book クラスを ProductCatalog テーブルに、Id プロパティをテーブルのプライマリキーのパーティションキーにマッピングしています。

[DynamoDBTable("ProductCatalog")] public class Book { [DynamoDBHashKey] public int Id { get; set; } // Additional properties go here. }

DynamoDBIgnore

関連するプロパティを無視するように指示します。クラスプロパティを保存しない場合は、この属性を追加することで、テーブルにオブジェクトを保存するときにこのプロパティを含めないように DynamoDBContext に指示できます。

DynamoDBLocalSecondaryIndexRangeKey

local secondary indexのソートキーにクラスプロパティをマッピングします。この属性は、local secondary indexの Query を実行し、インデックスソートキーを使用して結果を絞り込む必要がある場合に使用します。

DynamoDBProperty

テーブルの属性にクラスプロパティをマッピングします。クラスプロパティを同じ名前のテーブル属性にマッピングする場合は、この属性を指定する必要はありません。ただし名前が異なる場合は、このタグを使用してマッピングを指定できます。次の C# ステートメントでは、DynamoDBProperty によって、BookAuthors プロパティがテーブル内の Authors 属性にマッピングされています。

[DynamoDBProperty("Authors")] public List<string> BookAuthors { get; set; }

DynamoDBContext はこのマッピング情報を使用して、対応するテーブルにオブジェクトデータを保存するときに Authors 属性を作成します。

DynamoDBRenamable

クラスプロパティの代替名を指定します。これは、クラスプロパティの名前がテーブル属性と異なる DynamoDB テーブルに任意のデータをマッピングするためのカスタムコンバーターを記述する場合に役立ちます。

DynamoDBRangeKey

テーブルのプライマリキーのソートキーにクラスプロパティをマッピングします。テーブルに複合プライマリキー (パーティションキーおよびソートキー) がある場合は、クラスマッピングで、DynamoDBHashKey と DynamoDBRangeKey の両方の属性を指定する必要があります。

たとえば、サンプルテーブルの Reply には、Id パーティションキーと Replenishment ソートキーで構成されたプライマリキーがあります。次の C# コード例では、Reply クラスを Reply テーブルにマッピングしています。クラス定義では、プロパティのうち 2 つがプライマリキーにマッピングされることも示しています。

サンプルテーブルの詳細については、「テーブルの作成とサンプルデータのロード」を参照してください。

[DynamoDBTable("Reply")] public class Reply { [DynamoDBHashKey] public int ThreadId { get; set; } [DynamoDBRangeKey] public string Replenishment { get; set; } // Additional properties go here. }

DynamoDBTable

DynamoDB でクラスがマッピングされるターゲットテーブルを識別します。たとえば次の C# コード例では、Developer クラスを DynamoDB の People テーブルにマッピングしています。

[DynamoDBTable("People")] public class Developer { ...}

この属性は、継承またはオーバーライドすることができます。

  • DynamoDBTable 属性は継承できます。前述の例では、Developer クラスから継承された新しいクラス Lead を追加すると、People テーブルにもマッピングされます。People テーブルに DeveloperLead の両方のオブジェクトが格納されます。

  • DynamoDBTable 属性もオーバーライドできます。次の C# コード例では、Manager クラスは Developer クラスから継承していますが、DynamoDBTable 属性が明示的に追加されているため、クラスが別のテーブル(Managers)にマッピングされています。

    [DynamoDBTable("Managers")] public class Manager extends Developer { ...}

オプションのパラメータ LowerCamelCaseProperties を追加すると、次の C# コードスニペットに示すように、オブジェクトを格納する場合にプロパティ名の先頭文字を小文字にするように、DynamoDB にリクエストできます。

[DynamoDBTable("People", LowerCamelCaseProperties=true)] public class Developer { string DeveloperName; ...}

Developer クラスのインスタンスを保存する場合、DynamoDBContext では DeveloperName プロパティが developerName として保存されます。

DynamoDBVersion

項目のバージョン番号を格納するクラスプロパティを識別します。バージョニングの詳細については、「DynamoDB で AWS SDK for .NET オブジェクト永続性モデルを使用した、バージョン番号によるオプティミスティックロック」を参照してください。