É possível mapear uma chave composta em nhibernate fluente, onde metade da chave é um campo de identidade no banco de dados?
-
06-07-2019 - |
Pergunta
como a questão estados, é possível mapear uma chave composta em nhibernate fluente (ou não fluente suponho), onde um dos dois campos usados ??no compósito é um campo de identidade?
Eu tenho uma tabela onde uma parte da chave primária é um campo de identidade e o outro é um ID de inquilino. Este é um banco de dados legado onde a chave composta é usado como chaves estrangeiras todo, então modificar o banco de dados seria bastante significativo.
Obrigado!
Solução
Se é realmente uma coluna de identidade, então é garantido que ser exclusivo para cada registro, certo?
Se sim, você pode ignorar o ID de arrendamento completamente para fins de mapeamento. Seus campos de identidade será único em sua tabela primária -. E suas referências de chave estrangeira irá conter essa identificação única, de modo que o ID de arrendamento é realmente irrelevante
NHibernate realmente não importa se você está mapeando seu esquema de banco de dados exatamente. Eu tenho trabalhado com bancos de dados legados antes onde eu defini uma restrição exclusiva em uma coluna não-chave e, em seguida, disse NHibernate usar isso como a chave primária - ele funciona, e pode perfeitamente contornar todos os tipos de relacionamento composite-chave horrível mapeamentos.
Pense nisso. Contra-intuitivo, mas ele provavelmente irá trabalho.