È possibile mappare una chiave composita in modo fluido laddove metà della chiave è un campo di identità nel database?

StackOverflow https://stackoverflow.com/questions/1615647

Domanda

Come afferma la domanda, è possibile mappare una chiave composita in un metodo nhibernate fluente (o non fluente suppongo) in cui uno dei due campi utilizzati nel composito è un campo identità?

Ho una tabella in cui una parte della chiave primaria è un campo identità e l'altra è un ID tenant. Questo è un database legacy in cui la chiave composita viene utilizzata come chiavi esterne dappertutto, quindi la modifica del database sarebbe abbastanza significativa.

grazie!

È stato utile?

Soluzione

Se è davvero una colonna di identità, allora è garantito che sia unico per ogni record, giusto?

In tal caso, è possibile ignorare completamente l'ID di locazione ai fini della mappatura. I campi della tua identità saranno univoci nella tabella principale e i riferimenti alla chiave esterna conterranno questo ID univoco, quindi l'ID di locazione è in realtà irrilevante.

A NHibernate non importa davvero se si sta mappando esattamente lo schema del database. Ho lavorato con database legacy prima in cui ho definito un vincolo univoco su una colonna non chiave e poi ho detto a NHibernate di usarlo come chiave primaria: funziona e può sbilanciare ordinatamente tutti i tipi di orribili relazioni composito-chiave mappature.

Pensaci. Controintuitivo, ma probabilmente funzionerà.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top