流畅的NHibernate一对多单向映射

15 fluent-nhibernate

我有Post和Comment课程,他们有一对多关系,其中Post有一个评论列表.我如何将其映射为与Fluent NHibernate的单向关系,因为评论不需要知道其父Post?目前,这是我对Comment的映射:

Id(x => x.Id);
Map(x => x.Body);
References(x => x.User);
Run Code Online (Sandbox Code Playgroud)

和邮政:

Id(x => x.Id);
Map(x => x.Title);
HasMany(x => x.Comments)
    .Inverse()
    .WithKeyColumn("PostId")
    .Cascade.AllDeleteOrphan();
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为当我尝试使用新添加的Comment保存Post实例时,Comment(PostId)上的外键保持为NULL.当然,使用NULL PostId无法保存注释.我已经尝试删除.Inverse()子句,但这也不起作用.

Jam*_*ory 22

当您的外键具有非空约束时,NHibernate不支持此映射.如果删除该约束,您将看到NHibernate使用null PostId插入Comments,然后使用新Post的Id更新它们.

你要么需要:

  1. 删除非空约束Inverse呼叫
  2. 保持约束,并映射关系的另一面(使其成为双向关系,并允许Inverse正常工作)

有关一对多的NHibernate文档中对此进行了介绍,请参阅最后的" 非常重要说明 ".