свободный nhibernate: ошибка INSERT при сохранении новой сущности с дочерней сущностью - PullRequest
0 голосов
/ 10 февраля 2010

Я пытаюсь сохранить новую сущность «Опубликовать» с 1 элементом, добавленным в список «Редакции».

A 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 & 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
    }

Может ли кто-нибудь указать мне правильное направление, поскольку я не могу определить проблему. ТИА

1 Ответ

3 голосов
/ 10 февраля 2010

Попробуйте это:

PostMap

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

PostRevisionMap:

References(x => x.Post);
...