次のドメインエンティティオブジェクトがあります。
public class Report
{
public virtual int Id { get; set; }
public virtual int Score { get; set; }
public virtual EntityType Type { get; set; }
public virtual Object Entity { get; set; }
}
public class Category
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
public class Topic
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
Report.Entityは、カテゴリまたはトピックのいずれかになります。タイプはReport.Typeで示されます。EntityTypeは列挙型です。目標は、fluent-nhibernateを使用してレポートクラスを保存できるようにすることです。ICompositeUserTypeを使用してこれを達成できると思います。これにより、次のようになります。
public class Report
{
public virtual int Id { get; set; }
public virtual int Score { get; set; }
public virtual EntityCompositeUserType Entity { get; set; }
public virtual EntityType Type { get; set; }
}
私の質問は次のとおりです。EntityCompositeUserTypeクラスのNullSafeGetメソッドがドメインエンティティオブジェクト(CategoryまたはTopic)を返すようにすることは可能ですか?私が見たICompositeUserTypeのすべての例は、現在のテーブルの列から(私の場合は、レポートテーブルの列から)新しいオブジェクトを作成します。複数のテーブルの列を使用することについての言及が1つありましたが、その実装はわかりませんでした。