我有Post和Comment课程,他们有一对多关系,其中Post有一个评论列表。如何将此映射为与Fluent NHibernate的单向关系,因为评论不需要知道其父Post?目前,这是我对Comment的映射:
Id(x => x.Id);
Map(x => x.Body);
References(x => x.User);
和Post:
Id(x => x.Id);
Map(x => x.Title);
HasMany(x => x.Comments)
.Inverse()
.WithKeyColumn("PostId")
.Cascade.AllDeleteOrphan();
这不起作用,因为当我尝试使用新添加的Comment保存Post实例时,Comment(PostId)上的外键保持为NULL。当然,使用NULL PostId无法保存注释。我已经尝试删除.Inverse()子句,但这也不起作用。
答案 0 :(得分:22)
当您的外键具有非空约束时,NHibernate不支持此映射。如果删除该约束,您将看到NHibernate使用null PostId插入Comments,然后使用新Post的Id更新它们。
您需要:
Inverse
调用Inverse
正常工作)NHibernate documentation for one-to-many's中介绍了这一点,最后请参阅非常重要的注意事项。