我有以下域实体对象:
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 方法返回域实体对象(类别或主题)?我见过的所有 ICompositeUserType 示例都从当前表中的列(在我的例子中,从报告表中的列)创建一个新对象。我看到有人提到使用多个表中的列,但没有看到它的实现。