4

C# 用の公式 MongoDb ドライバーで MongoDB を使用しています。

私のドメイン オブジェクトはすべて文字列型の Id プロパティを持っています

string Id { get; set;}

しかし、実際のデータベースに 12 バイトのバイナリ ObjectId を格納したいのですが、これは次のようにクラス マップで実現されます。

  BsonClassMap.RegisterClassMap<X>(cm => {
    cm.AutoMap();
    cm.GetMemberMap(c => c.Id).SetRepresentation(BsonType.ObjectId);
  });

他のコレクションへの外部 ObjectId キーも文字列として表され、オブジェクト ID として保存する必要があります。

さて、回避できるのであれば、ID と外部キーごとに同じ SetRepresenttion を書きたくありません。

したがって、すべての文字列 Id フィールドを db で ObjectIds として表す必要があり、名前が「Id」で終わるすべての文字列プロパティも db で ObjectIds として表す必要があると言う方法はありますか?

4

1 に答える 1

1

ISerializationOptionsConvention と呼ばれる規則があります。こちらのドキュメントをご覧ください: http://www.mongodb.org/display/DOCS/CSharp+Driver+Serialization+Tutorial#CSharpDriverSerializationTutorial-Writeacustomconvention

これを使用すると、メンバー タイプが文字列であり、名前が「Id」で終わるかどうかをテストし、シリアル化オプションを割り当てることができます。

于 2012-06-02T12:22:35.057 に答える