.net - 是一对一还是组件?休眠映射

标签 .net asp.net nhibernate nhibernate-mapping

假设我有人员和地址类,并且它们在数据库中有不同的表。

一个人可以有一个地址类别。这对我来说是重要的部分。一个人只能拥有一个地址,因为它是子元素,我想将它们保留在数据库中的不同表中。

通常我知道我需要将它们放在同一张表中,但我的场景需要这个。

(而且它看起来像一对多,但我不想只为一个对象创建一个集合)

Person     Address
-------    -------
id         id
Name       PersonId
           StreetName

和类代码

Person                                                 
--------
public virtual long Id{get;set;}
public virtual Address MyAddress {get;set;}

如您所见,当我获得任何 Person 时,我想获得 Person 中的地址属性?但它们位于不同的表中。如何完成此映射?

提前致谢

最佳答案

您无法使用组件映射地址,因为它有自己的表。如果您将所有字段都放在一张表中,则可以使用它。 来自 Hibernate 引用:

The component element maps properties of a child object to columns of the table of a parent class.

您应该使用一对一关系来映射场景中的表和类。

关于.net - 是一对一还是组件?休眠映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/541649/

相关文章:

nhibernate - 创建 SessionFactory 时使用了无效或不完整的配置

c# - 如何限制 Parallel.ForEach?

c# - 找不到类型或命名空间名称 'ClaimsAuthenticationManager'

c# - 为什么我的 RichTextBox 没有更改前景色数据绑定(bind)

c# - 如何通过单击按钮添加新的 ASP.NET 表行?

asp.net - 将 Windows 身份验证与表单例份验证混合使用

c# - 在 Win 7 RC1 上从 IIS 获取目录条目时出错

c# - 以相同的顺序对两个单独的列表进行排序?

c# - 现有数据库上的 Fluent NHibernate 多对多关系

NHibernate 约定 ModelMapper; IsRootEntity 和 IdEntity 有什么区别