使用nHibernate加载子对象的特殊场景
在我正在编写的一个应用程序中,我遇到了一个“奇怪”的场景,并试图了解如何使用nHibernate实现 情况是这样的。。。有一个测试。测试由一系列的Testlet组成(Testlet是一组预定义的问题,带有元数据…) 事情。。。当我运行测试时,根据测试的特性(它的级别和类型是…),从数据库中随机选择组成它的testlet 这意味着在我的数据库中的Testlet表中,测试表不应该有FK。我认为在我的数据库中,一个指向存储过程的定制可以完成这项工作——然而,当我将映射hbms模式导出到一个空数据库时,它仍然会在我的Testlet表中创建外键 以下是我的测试映射:使用nHibernate加载子对象的特殊场景,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,在我正在编写的一个应用程序中,我遇到了一个“奇怪”的场景,并试图了解如何使用nHibernate实现 情况是这样的。。。有一个测试。测试由一系列的Testlet组成(Testlet是一组预定义的问题,带有元数据…) 事情。。。当我运行测试时,根据测试的特性(它的级别和类型是…),从数据库中随机选择组成它的testlet 这意味着在我的数据库中的Testlet表中,测试表不应该有FK。我认为在我的数据库中,一个指向存储过程的定制可以完成这项工作——然而,当我将映射hbms模式导出到一个空数据库时,
<class name="Test">
<id name="UID">
<generator class="guid" />
</id>
<property name="Type" />
<property name="Description" />
<bag name="Items" generic="true" inverse="false">
<key column="UID"/>
<one-to-many class="Testlet"/>
<loader query-ref="loadTestletByTestID"/>
</bag>
</class>
<sql-query name="loadTestletByTestID">
<load-collection alias="items" role ="Test.Items"/>
exec [TestletByTestID] ?
</sql-query>
exec[TestletByTestID]?
有没有办法绕过自动创建的外键
非常感谢,
Angel为什么不从映射中删除项,并调用查询来加载随机项,并在加载测试后分配它们?这样你就不需要存储过程了 如果在加载测试后不需要代码就自动加载它真的很重要,那么您甚至可以将此代码放到NHibernate中。然后,每当加载测试时都会执行它。但事实上,我怀疑这是否值得努力