我有Order类和SubOrder:Order descendant。现在,Order有.Item和SubOrder(显然)也有它,但SubOrder需要SubItem。创建时很容易:
Item = new SubItem((ISomeInterface)this);
但是当我从数据库加载 SubOrder(Session.Get< SubOrder>(id))时,如何告诉NHibernate创建SubItem而不是Item?项目的类型不在数据库中(我不需要也不希望它在那里);它总是“Order for Order,SubItem for SubOrder”。此外,它需要使用(ISomeInterface)SubOrder作为构造函数参数创建。
简而言之,我如何在NHibernate中管理自定义实体创建以实现上述功能?在创建SubItem时是否可以引用SubOrder(如果没有,我可以使用属性“injection”)?
我可能会使用IUserType,但它似乎是一种矫枉过正;而且我没有看到如何仅将IUserType应用于SubOrder.Item(对于IInterceptor也是如此)。此外,我没有看到如何获得对父订单的引用,除了为SubOrder使用OnLoad事件并在那里设置SubItem属性......这很尴尬。
答案 0 :(得分:0)
“SubOrder的OnLoad事件并在那里设置SubItem属性” - >有一个解决方案。
否则你可以尝试写一个custom ReflectionOptimizer。