我正在尝试保存新实体“发布”,并在其“修订”列表中添加了1个项目。
Post
可以有多个PostRevisions
,而PostRevision
只能有一个Post
。
我已经尝试了几种映射PostRevisions的方法,我的PostRevisionMap如下:
public PostRevisionMap()
{
Id(x => x.PostRevisionId, "PostRevisionId");
Map(x => x.Created, "CreateDateTime").Not.Nullable();
/// SOME OTHER STUFF HERE
References(x => x.Post, "PostId"); // OPTION 1
References(x => x.Post,"PostId").ForeignKey("PostId").PropertyRef(d => d.PostId); // OPTION 2
HasOne<Post>(x => x.Post).ForeignKey("PostId").Cascade.All().PropertyRef(x => x.PostId); // OPTION 3
}
调用SaveOrUpate时,我得到了不同的错误
选项1&amp; 3原因
The INSERT statement conflicted with the FOREIGN KEY constraint "PostId".
选项2导致
NHibernate.HibernateException : Unable to resolve property: PostId
我的PostMap如下:
public PostMap()
{
Id(x => x.PostId).Column("PostId");
HasMany(x => x.Revisions)
.Cascade.All()
.Table("PostRevisions")
.KeyColumn("PostId")
.ForeignKeyConstraintName("FK_PostRevision_Post");
/// OTHER STUFF
}
任何人都可以指出我正确的方向,因为我无法发现问题。 TIA
答案 0 :(得分:3)
试试这个:
PostMap
HasMany(x => x.Revisions)
.Inverse()
.Cascade.All();
PostRevisionMap:
References(x => x.Post);