我有一个名为Patient
的实体对象,此实体具有Visits
类型的属性,其类型为VisitsCollection
。NHibernate自定义集合类型
VisitsCollections
是IList<Visit>
的子类,但它也为集合添加了一些自定义逻辑(如自动排序,一些验证,通知等)。
I 需要使用自定义集合类型,因为它向添加到集合中的实体添加了一些数据并透明地执行了其他一些文书工作。
现在我要地图,在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
我不想从任何NHibernate类型继承我的VisitsCollection
,因为集合类是我希望它成为框架的一部分DAL-agnos tic(因为它将在许多场景中使用 - 不仅与数据库一起使用)。
关于如何映射这个,保存我的代码结构的任何想法?
在此先感谢。