NHibernate FetchMode.Lazy - PullRequest
       3

NHibernate FetchMode.Lazy

2 голосов
/ 17 марта 2010

У меня есть объект, у которого есть свойство, в котором есть коллекции, которые я не хотел бы загружать в нескольких ситуациях. В 98% случаев я хочу, чтобы эти коллекции были загружены, но в одном случае - нет. Вот код, который у меня есть ... Почему он не устанавливает режим выборки для коллекций свойств?

[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);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...