15

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

Id(x => x.Id);
Map(x => x.Body);
References(x => x.User);

和邮政:

Id(x => x.Id);
Map(x => x.Title);
HasMany(x => x.Comments)
    .Inverse()
    .WithKeyColumn("PostId")
    .Cascade.AllDeleteOrphan();

这不起作用,因为当我尝试使用新添加的评论保存 Post 实例时,评论 (PostId) 上的外键为空。当然,不能使用 NULL PostId 保存评论。我试过删除 .Inverse() 子句,但这也不起作用。

4

1 回答 1

22

当您的外键有非空约束时,NHibernate 不支持这种映射。如果您删除该约束,您将看到 NHibernate 使用空 PostId 插入评论,然后使用新帖子的 Id 更新它们。

您要么需要:

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

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

于 2009-02-17T22:28:42.567 回答