2010-02-23 13 views
5

Ho due oggetti padre e un elenco figlio. Nella mia fluente mappatura da nibernario per il genitore voglio caricare la lista dei bambini.Nibernate fluente che inserisce una clausola where nella mappatura

Tuttavia, voglio che questo sia condizionale, una colonna nella tabella figlio è chiamata "IsDeleted" e voglio solo restituire i bambini dove "IsDeleted" è false.

È possibile impostare una mappatura per fare questo? Se no, è possibile farlo solo con lo standard Nibernate?

Grazie

risposta

11

Sì, è possibile utilizzare un vincolo Dove in Fluent NHibernate per mappare questo. Qualcosa come:

HasMany(x => x.Children).Where("IsDeleted = 0"); 

Il vincolo Where deve utilizzare la sintassi SQL non HQL. Per le tabelle che consentono le eliminazioni software è probabilmente più semplice mappare una vista che filtra i record eliminati.

+0

Grazie, è quello che mi serviva, ma come specificare la colonna nell'oggetto padre da passare al figlio? Se è un riferimento è qualcosa come References (a => a.Supplier) .Column ("SupplierNo"); ma HasMany non ha una proprietà Column. – lancscoder

+0

Non sono sicuro di aver capito la domanda e avrei bisogno di sapere di più sul modello e sul database per dare una buona risposta. HasMany ha un metodo KeyColumn se stai chiedendo come specificare la colonna FK su un oggetto figlio. –

+0

No Voglio specificare la colonna sull'oggetto genitore poiché non usa la chiave primaria. Il mio oggetto genitore ha un pk, nome, ID secondario, questi collegamenti secondari all'FK nel bambino. So che non è un buon design db ma è ciò che ho ereditato. Così, quando eseguo un HasMany, passa il mio valore PK quando voglio che passi il mio ID secondario. Grazie – lancscoder

Problemi correlati