martedì 24 agosto 2010

NHibernate - Collezioni di tipo Bag e Set

C# 2.0

Le collezioni di tipo Bag permettono l’inserimento di valori duplicati, questo quindi può comportare dei problemi in fase di Refresh, in pratica vengono duplicati i valori all’interno della collection. A questo punto è consigliabile una collezione di tipo Set, la quale può anche essere ordinata:

<set name="PraNoteScadenzes" order-by="DataScadenza desc" lazy ="false" inverse ="true" cascade ="all-delete-orphan">
<key column="PraId"/>
<one-to-many class="Pratiche.DataLayer.Database.Entities.NoteScadenze, Pratiche.DataLayer"/>
</set>

Nella classe poi, la proprietà deve essere codificata così:

public virtual Iesi.Collections.ISet PraNoteScadenzes
{
get
{
if (_praNoteScadenzes == null)
{
_praNoteScadenzes = new SortedSet();
}
return _praNoteScadenzes;
}
set { _praNoteScadenzes = value; }
}