2012-02-10 17 views

Respuesta

10

No, no como de esta respuesta.

El motor NHibernate utiliza la interfaz Iesi.Collections.ISet en las clases de colección internas que se utilizan como envoltorios alrededor de colecciones en sus clases que NHibernate persiste. No hay una conversión directa a System.Collections.Generic.ISet<T>.

Actualización: NHibernate 4 ahora utiliza HashSet<T> del BCL internamente y HashedSet<T> se ha eliminado de la dependencia Iesi.Collections. El enfoque para usar System.Collections.Generic.ISet<T> ya está disponible.

18

Sí. Hay dos enfoques:

  1. declara su colección como ICollection<T> e inicializar como HashSet<T>. Ver this article. Modelo colecciones como miembros privados y expongo IEnumerable<T>, así que esto funciona bien, pero la desventaja es que no se puede exponer ISet<T>.
  2. Utilice el paquete Set4Net4 NuGet de Jose Romaniello. Consulte this article y source code.
+0

gracias por el enlace. –

+0

Me gusta el segundo enfoque. – kaptan

+0

Hm, cuando lo probé, NHib por alguna razón estaba recreando mi colección como una matriz, por lo que no pude agregar/eliminar elementos. Simplemente miró a ICollection y decidió que puede poner lo que quiera ... – JustAMartin

2

Sí, con Nhibernate 4, usando System.Collections.Generic.ISet<> ahora es the way to go.

Cuestiones relacionadas