一对一映射与Fluent NHibernate不工作

本文关键字:工作 NHibernate Fluent 映射 一对一 | 更新日期: 2023-09-27 18:15:09

我有两个表(工党和工党位置)。我想使用对象(theLabourer.LabourPosition.Name而不是getLabourPosition(theLabourer.LabourPositionId),而不是从Labour表到Labour position表。

我读了一些文章来做这个,但他们似乎不适合我…当我试图查看工党位置属性的值时,我得到的错误是"无法初始化代理-没有会话"。

我的映射(注:工党位置没有返回工党的fki,只有一种方式):LabourMap类:

References<LabourPosition>(x => x.LabourPosition, "LabourPositionsId");

显然,我已经将Labour实体中的属性定义为:

public virtual LabourPosition LabourPosition { get; set; }

任何想法?帮助将是感激的!

一对一映射与Fluent NHibernate不工作

来自fluent映射文档

HasOne/一对一

HasOne通常用于特殊情况。通常,你会用a参考关系在大多数情况下(见:我认为你的意思是一个多对一的)。如果你真的想要一对一,那么你可以使用具方法。

HasOne(x => x. cover);

如果您想使用引用(如代码所示),则需要映射关系的双方。来自文档:

HasMany/一对多

HasMany可能是最常见的基于集合的关系你要用。HasMany是引用的"另一边"关系,并应用于"一方"(一个作者有很多)书)。现在,让我们来描绘我们开始的这段关系的作者一方以上。我们需要联接到返回集合的books表与该作者有关的所有书籍

public class Author {public IList Books {get;设置;}}使用AuthorMap构造函数中的HasMany方法来映射这一侧关系:

HasMany(x => x. books);与引用一样,外键默认为您可以使用KeyColumn方法覆盖它或进行更改使用约定的默认行为

可以使用几种不同类型的集合它们都在HasMany调用下可用。

为什么需要一对一的关系,而不是将所有列保存在一个表中?

在您的映射中尝试

References(x => x.LabourPosition, "LabourPositionsId");