hasmany nhibernate quando não estiver usando chave estrangeira
-
05-07-2019 - |
Pergunta
Vamos dizer que eu tenho uma tabela pedido, que é o seguinte:
RequestId INT
ReferenceNumber VARCHAR
Cada pedido é registrado em uma tabela requestlog. Não há chaves estrangeiras entre as tabelas:
RequestLogId INT
ReferenceNumber VARCHAR
Content VARCHAR
O requestlog contém o conteúdo do pedido, e este conteúdo precisa ser armazenado por um período de tempo. O pedido pode ser excluído, mas o log só pode ser excluído após um período de tempo.
Como posso mapear o meu objeto de solicitação para que ele possa conter uma lista de requestlogs, com base na ReferenceNumber?
Eu tentei isso:
Table("InsuranceRequest");
Id(i => i.Id).Column("InsuranceRequestId");
Map(i => i.ReferenceNumber);
HasMany(i => i.InsuranceRequestLog).KeyColumn("RefenceNumber").LazyLoad.Cascade.None();
Não funciona embora. Este mapeamento tenta mapear o ReferenceNumber ao RequestLogId de requestlog. Existe uma maneira de especificar que a coluna se juntar deve ser o ReferenceNumber insurancerequestlog?
Solução
nada impedir a muitos para muitos em sua estrutura de tabela .. eu recomendo mudar a estrutura e torná-los chaves estrangeiras, e tenho certeza que a muitos para muitos mapeamento irá trabalhar para u se o mapeamento eu não trabalho após a mudança da estrutura.
Outra dica para u: tomar um db vazia e tentar expor esquema .. que o retorno vai ser capaz de ver o que NHibernate acho que a estrutura deve ser semelhante