首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fluent Nhibernate -映射层次结构

Fluent Nhibernate -映射层次结构
EN

Stack Overflow用户
提问于 2015-11-11 17:55:36
回答 1查看 42关注 0票数 0

我在我的项目中使用了nhibernate,我有一个士兵表:

代码语言:javascript
复制
ID, FIRSTNAME, LASTNAME, COMMANDERID

所以每个士兵都有一个指挥部,它也是一个士兵。

我有一个Soldier类:

代码语言:javascript
复制
    public class Soldier
    {
        public virtual int Id { get; set;}
        public virtual Soldier Commander { get; set; }
        public virtual IList<Soldier> Soldiers { get; set; }
    }

我的问题是,如何映射士兵属性?我尝试了以下几种方法:

代码语言:javascript
复制
HasMany(x => x.Soldiers).KeyColumn("COMMANDERID");

但是我得到了一个例外。

EN

回答 1

Stack Overflow用户

发布于 2015-11-11 23:58:00

您在这里拥有的是与类本身的一对多关系(而不是另一个类)。因此,我相信您必须在类Soldier的映射中同时指定"Reference“和"HasMany”。因此,我认为类Soldier的正确映射应该如下所示:

代码语言:javascript
复制
Table("Soldier");
Id(x => x.ID).GeneratedBy.Identity();
Map(x => x.FIRSTNAME);
Map(x => x.LASTNAME);
Reference(x => x.Commander).Column("COMMANDERID"); //Parent
HasMany(x => x.Soldiers).Cascade.All().Inverse().KeyColumn("COMMANDERID"); //Children

一旦我们讨论的是同一个实体,我就不太确定Inverse和Cascade是如何工作的。您可能需要对其进行测试。

这个问题也可以帮助您解决问题(非常类似的场景):Fluent / NHibernate Collections of the same class

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33648075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档