Domanda

qual è la migliore pratica per mappare un elenco di entità che devono essere gestite dai loro genitori

È stato utile?

Soluzione

La differenza è semantica:

  • un set dovrebbe essere usato, quando la tua raccolta non è ordinata e può contenere ogni elemento una sola volta
  • una borsa non è ancora ordinata, tuttavia - può contenere alcuni elementi molte volte (beh - almeno con mappature molti-a-molti)
  • un elenco è una raccolta ordinata e che può contenere alcuni articoli molte volte: hai la garanzia che gli articoli verranno recuperati nello stesso ordine in cui sono stati salvati (NHibernate gestirà l'indice specificato colonna per te)

Tuttavia, sia bag che list possono essere rappresentati con IList < > nel codice - va perfettamente bene, ma devi ricordare che non puoi fare affidamento sull'ordine degli articoli in una borsa.

Quando scegli come mappare il tuo elenco, scegli l'opzione che meglio si adatta alla tua collezione - se non hai bisogno di ordine, scegli borsa , se hai bisogno di ordine - scegli elenco .

Sidenote: esiste la possibilità di controllare l'ordine degli articoli in borsa - è necessario specificare l'attributo order-by con l'espressione sql appropriata. Tuttavia, non utilizzarlo per emulare il comportamento elenco : utilizzare direttamente elenco . L'attributo order-by per bag deve essere utilizzato quando l'ordine è il risultato di alcuni altri attributi, come l'ordinamento di entità in base al timestamp dell'ultima modifica.

Altri suggerimenti

Tutti gli esempi che ho trovato usano IList < > , ed è quello che uso nel mio codice.

Penso che Bag possa essere un residuo dell'Hibernate originale di Java - Ricordo vagamente di aver letto un post in tal senso.

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