現在、Fluent NHibernate から MongoDB への移行が混在しています。オブジェクトをモデリングするための最良の方法は何かということに興味がありました。ほとんどの場合、私はそれらを放っておきたいと思っていましたが、それは不可能かもしれません. たとえば、次の 2 つのクラスがあります。
public class Config
{
public int Id { get; set; }
public virtual string Name { get; set; }
public Filter Filter { get; set; }
}
public class Filter
{
public int Id { get; set; }
public virtual string Name { get; set; }
}
これで、MongoDB に関しては、ID に Guid/string を使用する必要があることがわかりました。それは問題ありません。データを移行するときに、AutoMapper がそれを変更してくれます。私の懸念はデータモデルです。明らかに、Config をドキュメントとして MongoDB に保存するときに、完全な Filter オブジェクトを一緒に保存したくありません。1 対多の関係があるからです。そのフィルターを一緒に保存すると、冗長データが保存されます。オブジェクト全体ではなく、フィルター ID のみを保存するように MongoDB マッピングを介して言う方法はありますか? Fluent NHibernate を使用すると、上記のオブジェクトを使用して適切にマップすることができます。私は何かが欠けていることを願っています。
編集:明らかな解決策は、次のように Config クラスを調整することであることに言及する必要があります。
public class Config : Entity
{
private string _filterId;
public int Id { get; set; }
public virtual string Name { get; set; }
public string FilterId
{
get
{
if (Filter == null)
return null;
_filterId = Filter.Id;
return _filterId;
}
set { _filterId = value; }
}
public Filter Filter
{
get
{
// return code to grab Filter by _filterId from mongo
}
}
}
しかし、それは私には汚くてエレガントではありません。もっと良いものはありますか?