NHibernate FetchMode.Lazy
- by RyanFetz
I have an object which has a property on it that has then has collections which i would like to not load in a couple situations.  98% of the time i want those collections fetched but in the one instance i do not.  Here is the code I have...  Why does it not set the fetch mode on the properties collections?
[DataContract(Name = "ThemingJob", Namespace = "")]
[Serializable]
public class ThemingJob : ServiceJob
{
    [DataMember]
    public virtual Query Query { get; set; }
    [DataMember]
    public string Results { get; set; }
}
[DataContract(Name = "Query", Namespace = "")]
[Serializable]
public class Query : LookupEntity<Query>, DAC.US.Search.Models.IQueryEntity
{
    [DataMember]
    public string QueryResult { get; set; }
    private IList<Asset> _Assets = new List<Asset>();
    [IgnoreDataMember]
    [System.Xml.Serialization.XmlIgnore]
    public IList<Asset> Assets { get { return _Assets; } set { _Assets = value; } }
    private IList<Theme> _Themes = new List<Theme>();
    [IgnoreDataMember]
    [System.Xml.Serialization.XmlIgnore]
    public IList<Theme> Themes { get { return _Themes; } set { _Themes = value; } }
    private IList<Affinity> _Affinity = new List<Affinity>();
    [IgnoreDataMember]
    [System.Xml.Serialization.XmlIgnore]
    public IList<Affinity> Affinity { get { return _Affinity; } set { _Affinity = value; } }
    private IList<Word> _Words = new List<Word>();
    [IgnoreDataMember]
    [System.Xml.Serialization.XmlIgnore]
    public IList<Word> Words { get { return _Words; } set { _Words = value; } }
}
        using (global::NHibernate.ISession session = NHibernateApplication.GetCurrentSession())
        {
            global::NHibernate.ICriteria criteria = session.CreateCriteria(typeof(ThemingJob));
            global::NHibernate.ICriteria countCriteria = session.CreateCriteria(typeof(ThemingJob));
            criteria.AddOrder(global::NHibernate.Criterion.Order.Desc("Id"));
            var qc =  criteria.CreateCriteria("Query");
            qc.SetFetchMode("Assets", global::NHibernate.FetchMode.Lazy);
            qc.SetFetchMode("Themes", global::NHibernate.FetchMode.Lazy);
            qc.SetFetchMode("Affinity", global::NHibernate.FetchMode.Lazy);
            qc.SetFetchMode("Words", global::NHibernate.FetchMode.Lazy);
            pageIndex = Convert.ToInt32(pageIndex) - 1; // convert to 0 based paging index
            criteria.SetMaxResults(pageSize);
            criteria.SetFirstResult(pageIndex * pageSize);
            countCriteria.SetProjection(global::NHibernate.Criterion.Projections.RowCount());
            int totalRecords = (int)countCriteria.List()[0];
            return criteria.List<ThemingJob>().ToPagedList<ThemingJob>(pageIndex, pageSize, totalRecords);
        }