我理解nhibernate如何映射像Users和Addresses这样的表。
但如果我有一张像这样的表怎么办?
Users_Addresses包含UserID,AndressID列。
我是否必须为此创建映射并使其像普通实体一样?它实际上是一个我将在内连接中引用的表。
答案 0 :(得分:4)
使用NHibernate,您可以独立于数据库布局设计代码。您不必(也不应该)创建与数据库表和列完全相同的类。 例如:
public class User
{
public IList<Address> Addresses { get; private set; }
public int Id { get; set; }
}
映射取决于地址和用户之间的关系:
在用户具有多个地址且不同用户可以使用这些地址的情况下,您可以使用多对多映射来映射地址。 映射还取决于您希望如何创建用户和地址类。
NHibernate的想法是:以您喜欢的方式编写代码,并在以后向数据库添加映射。
答案 1 :(得分:0)
地址通常被认为是您正在讨论的场景中的值类型 - 它在用户之外没有内在身份。
nHibernate中的值类型被映射为组件。值类型的集合被映射为一组复合元素。
有关如何执行此操作的详细信息,请参阅https://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/components.html。