流畅的nhibernate:使用子实体保存新实体时INSERT错误

时间:2010-02-09 22:02:46

标签: fluent-nhibernate automapping

我正在尝试保存新实体“发布”,并在其“修订”列表中添加了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

1 个答案:

答案 0 :(得分:3)

试试这个:

PostMap

HasMany(x => x.Revisions)
    .Inverse()
    .Cascade.All();

PostRevisionMap:

References(x => x.Post);
相关问题