Wie kann ich meiner Entität mit NHibernate eine Liste von Zeichenfolgen zuordnen?

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

  •  09-06-2019
  •  | 
  •  

Frage

Ich habe zwei Tabellen in meiner Datenbank:Artikel und Tags

Die Tag-Tabellen bestehen aus ArticleID (Fremdschlüssel) und einem Tag (varchar).

Jetzt muss ich Artikel-Tags einer schreibgeschützten Sammlung in der Artikel-Entität zuordnen, entweder mithilfe von IList-Tags oder ReadOnlyCollection-Tags.

Ich habe das NHibernate-Referenzmaterial konsultiert, kann aber anscheinend nicht herausfinden, wann ich Set, Bag und die anderen Nhibernate-Sammlungen verwenden soll.Ich habe Beispiele gesehen, die die ISet-Sammlung verwenden, aber ich mag es wirklich nicht, meine Entitätsklassen an einen NHibernate-Typ zu binden.

Wie kann ich das Mapping in NHibernate durchführen?

bearbeiten:Am Ende habe ich ein verwendet <bag> stattdessen, da kein Index erforderlich ist:

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

Lösung

Der in Ihrer Zuordnung zu verwendende Sammlungstyp hängt davon ab, wie Sie die Sammlung im Code darstellen möchten.Die Einstellungskarte sieht folgendermaßen aus:

  • Der <list> direkt auf ein IList.
  • Der <map> ordnet sich direkt einem IDictionary zu.
  • Der <bag> Karten zu einer IList.A entspricht nicht vollständig mit der IList-Schnittstelle, da die Add()-Methode ist nicht garantiert, dass Gibt den richtigen Index zurück.Ein Objekt kann zu einem <bag> ohne Initialisierung der IList.Stellen Sie sicher, dass Blenden Sie entweder die IList aus dem Konsumenten Ihrer API oder machen Sie sie gut dokumentiert.
  • Der <set> wird einem Iesi.Collections.ISet zugeordnet.Das Schnittstelle ist Teil der Iesi.Collections-Assembly mit NHibernate vertrieben werden.

Wenn Sie also möchten, dass eine IList zurückgegeben wird, verwenden Sie die <list> Kartierung.In Ihrem Fall würde ich wahrscheinlich die Karte verwenden <list> Kartierung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top