[英]One-to-one mapping with Fluent NHibernate not working
我有2个表(Labor和LabourPosition)。 我想使用一个对象(theLabourer.LabourPosition.Name
而不是getLabourPosition(theLabourer.LabourPositionId)
而不是从Labor表中获取到LabourPosition表的getLabourPosition(theLabourer.LabourPositionId)
。
我已经阅读了一些文章来做到这一点,但它们似乎并不适合我......我在尝试查看LabourPosition属性的值时得到的错误是“无法初始化代理 - 没有会话”。
我的映射(ps:LabourPosition没有fki回到Labor,只有一种方式):LabourMap类:
References<LabourPosition>(x => x.LabourPosition, "LabourPositionsId");
然后显然我已经将Labor实体中的属性定义为:
public virtual LabourPosition LabourPosition { get; set; }
有任何想法吗? 帮助将不胜感激!
从流畅的映射文档
HasOne /一对一
HasOne通常用于特殊情况。 通常,在大多数情况下你会使用References关系(参见:我认为你的意思是多对一)。 如果你真的想要一对一,那么你可以使用HasOne方法。
HasOne(x => x.Cover);
如果您想使用引用(如代码所示),则需要映射关系的两侧。 从文档:
HasMany /一对多
HasMany可能是您将要使用的最常见的基于集合的关系。 HasMany是References关系的“另一面”,并且被应用于“一面”(一位作者有很多书)。 现在让我们来看看我们上面开始的关系的作者方面。 我们需要加入书籍表,返回与该作者相关的任何书籍的集合。
公共课作者{public IList Books {get; 组; 我们使用AuthorMap构造函数中的HasMany方法来映射关系的这一面:
HasMany(x => x.Books); 与引用一样,外键默认为Author_id,您可以使用KeyColumn方法覆盖它,或使用约定更改默认行为。
您可以使用几种不同类型的集合,并且它们都可以在HasMany调用下使用。
为什么你需要一对一的关系,而不是只保留一个表中的所有列?
在你的映射中试试
References(x => x.LabourPosition, "LabourPositionsId");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.