我有一个名为的实体对象Patient
,该实体有一个名为的属性Visits
,它的类型为VisitsCollection
.
VisitsCollections
是的子类,IList<Visit>
但它也向集合添加了一些自定义逻辑(如自动排序、一些验证、通知等)。
我需要使用自定义集合类型,因为它将一些数据添加到添加到集合中的实体并透明地执行其他一些文书工作。
现在我想在 NHibernate 中映射它,所以我创建了:
<list name="Visits" lazy="true" fetch="select">
<key foreign-key="PatientId" />
<index column="Timestamp" />
<one-to-many class="Visit" not-found="ignore"/>
</list>
我遇到了一个例外:
无法将类型为“NHibernate.Collection.PersistentList”的对象转换为类型“...VisitsCollection”
每当我访问访问属性时。
我也尝试过这样映射它:
<list name="Visits" lazy="true" fetch="select" collection-type="VisitsCollection">
<key foreign-key="PatientId" />
<index column="Timestamp" />
<one-to-many class="Visit" not-found="ignore"/>
</list>
但是,我仍然遇到了这个异常:
自定义类型未实现 UserCollectionType: .....VisitsCollection
我不想VisitsCollection
从任何 NHibernate 类型继承我,因为集合类是我希望它与 DAL 无关的框架的一部分(因为它将在许多场景中使用 - 不仅与数据库一起使用)。
关于如何映射这个,保留我的代码结构的任何想法?
提前致谢。