Come è possibile associare un elenco di stringhe per il mio entità con NHibernate?

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

  •  09-06-2019
  •  | 
  •  

Domanda

Ho due tabelle del database:Articoli e Tag

Il Tag di tabella è costituita da ArticleID (chiave esterna) e un Tag (varchar).

Ora ho bisogno di una mappa di un articoli i tag in un readonly raccolta sull'Articolo entità, sia utilizzando IList Tag o ReadOnlyCollection Tag.

Ho consultato il NHibernate materiale di riferimento, ma non riesco a capire quando utilizzare Set, Borsa e altri Nhibernate collezioni.Ho visto esempi di utilizzo della ISet collezione, ma non mi piace per allacciarmi le classi di entità di un tipo di NHibernate.

Come posso fare la mappatura in NHibernate?

edit:Ho finito per usare un <bag> invece, in quanto non necessita di un indice:

<bag name="Tags" table="Tag" access="nosetter.camelcase" lazy="false">
  <key column="ArticleId" />
  <element column="Tag" type="System.String" />
</bag>
È stato utile?

Soluzione

Il tipo di raccolta da utilizzare nel tuo mappatura dipende da come si vuole rappresentare la collezione in codice.Le impostazioni della mappa in questo modo:

  • Il <list> le mappe direttamente ad un IList.
  • Il <map> le mappe direttamente ad un IDictionary.
  • Il <bag> mappe per un IList.Una non completamente conformi con l'interfaccia IList perché il Metodo Add() non è garantito il ritorno l'indice corretto.Un oggetto può essere aggiunto a un <bag> senza l'inizializzazione di IList.Assicurarsi di nascondere il IList dal i consumatori di API o di fare ben documentato.
  • Il <set> mappe per un Iesi.Collezioni.ISet.Che l'interfaccia è parte del Iesi.Collezioni di montaggio distribuito con NHibernate.

quindi, se volete un IList essere restituito, poi si usa l' <list> la mappatura.Nel tuo caso, probabilmente sarei mappa utilizzando il <list> la mappatura.

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