NHibernate中的合成类

时间:2012-04-12 08:28:53

标签: c# nhibernate nhibernate-mapping

我的数据库中有许多表,称为

UserMatchCriteria
UserMatchLifestyle
UserHobby

现在前两个用户ID只有一个行条目,但第三个表可以包含0到100个条目,具体取决于用户选择的爱好。

我希望能够在C#代码中创建一个名为UserSearchDetails的对象,它包含一个UserMatchCriteria对象,一个UserMatchLifestyle对象和一个包含零个或多个UserHobby对象的IList集合。

我的问题是我不希望将User表绑定到必须在每次加载时链接到这些,因为这是一个很大的开销,我几乎不需要用于用户对象的所有用例。我希望将搜索详细信息单独加载到UserSearchDetails对象中,该对象没有与之关联的DB表。显然我可以使用NHibernate来做诸如

之类的事情
<one-to-one name=UserMatchCriteria>
<one-to-one name=UserMatchLifestyle>
<bag name=Hobbies........... />

等,但没有基表来运行初始选择关闭,并向我提供UserId,我不确定在什么上下文中使用这些条目。

我是否需要创建另一个名为UserSearchDetails的表,只有一个用于UserId的条目,用作我的基表,然后通过UserId的PK连接到其他表?

还是有另一种方法来实现我在这里要做的事情吗?

1 个答案:

答案 0 :(得分:1)

默认情况下,引用和包是延迟加载的。您可以在用户中映射组件

<component name="UserSearchDetails">
  <many-to-one>
  <many-to-one>
  <bag>
<component>