Nibernato fluente: insira erro ao salvar uma nova entidade com uma entidade infantil
-
19-09-2019 - |
Pergunta
Estou tentando salvar uma nova entidade 'post' com 1 item adicionado à sua lista de 'revisões'.
UMA Post
pode ter muitos PostRevisions
, e a PostRevision
só pode ter um Post
.
Eu tentei várias maneiras de mapear as pós -elegadas, meu pós -revista é o seguinte:
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
}
Ao ligar para o salvador, recebo erros diferentes
Opção 1 e 3 Causa
The INSERT statement conflicted with the FOREIGN KEY constraint "PostId".
Opção 2 causas
NHibernate.HibernateException : Unable to resolve property: PostId
Meu postMap é o seguinte:
public PostMap()
{
Id(x => x.PostId).Column("PostId");
HasMany(x => x.Revisions)
.Cascade.All()
.Table("PostRevisions")
.KeyColumn("PostId")
.ForeignKeyConstraintName("FK_PostRevision_Post");
/// OTHER STUFF
}
Alguém pode me apontar na direção certa, pois não consigo identificar o problema. Tia
Solução
Experimente isso:
Pós -mapa
HasMany(x => x.Revisions)
.Inverse()
.Cascade.All();
PostrevisionMap:
References(x => x.Post);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow