Comment puis-je mapper une liste de chaînes à mon entité à l’aide de NHibernate ?

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

  •  09-06-2019
  •  | 
  •  

Question

J'ai deux tables dans ma base de données :Articles et balises

Les tables Tags se composent d'ArticleID (clé étrangère) et d'une Tag (varchar).

Maintenant, je dois mapper les balises d'un article dans une collection en lecture seule sur l'entité Article, soit en utilisant les balises IList ou les balises ReadOnlyCollection.

J'ai consulté le matériel de référence NHibernate, mais je n'arrive pas à savoir quand utiliser Set, Bag et les autres collections Nhibernate.J'ai vu des exemples utilisant la collection ISet, mais je n'aime vraiment pas lier mes classes d'entités à un type NHibernate.

Comment puis-je effectuer le mappage dans NHibernate ?

modifier:J'ai fini par utiliser un <bag> à la place, comme il ne nécessite pas d'index :

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

La solution

Le type de collection à utiliser dans votre mappage dépend de la manière dont vous souhaitez représenter la collection dans le code.La carte des paramètres est la suivante :

  • Le <list> Mapte directement à un ilist.
  • Le <map> mappe directement à un IDictionary.
  • Le <bag> mappé à une IList.A ne se conforme pas complètement à l'interface ILIST car la méthode Add () n'est pas garantie pour renvoyer l'index correct.Un objet peut être ajouté à un <bag> sans initialiser l'Ilist.Assurez-vous de masquer l'Ilist aux consommateurs de votre API ou de le faire bien documenter.
  • Le <set> correspond à un Iesi.Collections.ISet.Cette interface fait partie de l'assemblage IESI.Collections réparties avec nhibernate.

donc si vous souhaitez qu'une IList soit renvoyée, vous utiliserez le <list> cartographie.Dans votre cas, je cartographierais probablement en utilisant le <list> cartographie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top