0

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

UserMatchCriteria
UserMatchLifestyle
UserHobby

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

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

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

<one-to-one name=UserMatchCriteria>
<one-to-one name=UserMatchLifestyle>
<bag name=Hobbies........... />

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

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

还是有另一种方法可以实现我在这里尝试做的事情?

4

1 回答 1

1

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

<component name="UserSearchDetails">
  <many-to-one>
  <many-to-one>
  <bag>
<component>
于 2012-04-18T07:06:29.437 回答