DynamoDB の属性
このセクションでは、クラスとプロパティを DynamoDB のテーブルや属性にマッピングできるように、オブジェクト永続性モデルで使用できる属性を示します。
注記
次の属性では、DynamoDBTable
と DynamoDBHashKey
だけが必須です。
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
属性は継承できます。前述の例では、Lead
クラスから継承された新しいクラスDeveloper
を追加すると、People テーブルにもマッピングされます。People テーブルにDeveloper
とLead
の両方のオブジェクトが格納されます。 -
DynamoDBTable
属性もオーバーライドできます。次の C# コード例では、Manager
クラスはDeveloper
クラスから継承していますが、DynamoDBTable
属性が明示的に追加されているため、クラスが別のテーブル(Managers)にマッピングされています。[DynamoDBTable("Managers")] public class Manager : Developer { ...}
オプションのパラメータ LowerCamelCaseProperties
を追加すると、次の C# コードスニペットに示すように、オブジェクトを格納する場合にプロパティ名の先頭文字を小文字にするように、DynamoDB にリクエストできます。
[DynamoDBTable("People", LowerCamelCaseProperties=true)] public class Developer { string DeveloperName; ...}
Developer
クラスのインスタンスを保存する場合、DynamoDBContext
では DeveloperName
プロパティが developerName として保存されます。
DynamoDBVersion
項目のバージョン番号を格納するクラスプロパティを識別します。バージョニングの詳細については、「DynamoDB で AWS SDK for .NET オブジェクト永続性モデルを使用した、バージョン番号によるオプティミスティックロック」を参照してください。