RavenDBのドキュメントキーに使用したいクラスがあります。
public class DocumentKey
{
public string Namespace { get; set; }
public string Id { get; set; }
}
ITypeConverter
また、参照型から文字列に変換するための(.NETのものではなく、RavenDB固有の)インターフェイスを実装しました(データベースでは、キーはすべて実際には文字列であるため)。
最後に、プロパティを介して公開されることによりITypeConverter
、の実装を実装に追加しました。IDocumentStore
List<ITypeConverter>
Conventions.IdentityProviders
ただし、実装のLoadAsync<T>
オーバーロードの署名は次のようになります(簡潔にするために複数のIDを使用する署名を削除しました。また、インターフェイスIAsyncDocumentSession
の場合と同じです)。Load
IDocumentSession
LoadAsync<T>(string id);
LoadAsync<T>(ValueType id);
次の理由から、キーに値型を使用したくありません。
- キーのタイプに制約のない抽象化があります。値型を持つためだけにこれをミラーリングするために別個の構造を作成することは非常に不便です。
- 値型に制限されているため、型を完全に制御することはできません。値型にはデフォルトのコンストラクターがあり、コード内の他の場所で処理する必要がない方法で値をデフォルト設定します。
RavenDBで参照型をドキュメントキーとして使用するにはどうすればよいですか?