2013-08-24 2 views
1

У меня есть scenerio, где я сохраняю график объектов, и мне нужно получить его позже в другом процессе. Простой случай manupulation данных действительно.nhibernate возвращает пустую коллекцию

Проблема заключается в том, что после успешного сохранения объекта и связанного с ним сбора, как указано в операциях вставки вывода, последующий запрос для того же объекта возвращает пустую коллекцию для связанной с ней коллекции. Я даже называю Flush() до этого. Странно, закрытие и повторное открытие приложения заставляет его возвращать заполненную коллекцию.

У меня есть это отображение для назначения класса

<set name="workhours" inverse="true" cascade="all" lazy="true"> 
    <key> 
    <column name="person" /> 
    </key> 
    <one-to-many class="workhour" /> 
</set> 

Вот код для извлечения данных

Method1() 
{ 
DataAccessManager.StartOperation(); 
     IEnumerable<Entity> q = GetQueryProvider(); 
     if (total > 0) 
     { 
      q = q.Skip(startIndex).Take(total); 
     } 
     totalfound = q.Count(); 
     IList<Entity> list = q.ToList(); 
     DataAccessManager.EndOperation(); 
     return list; 
} 
protected override IEnumerable<Entity> GetQueryProvider() 
    { 
     return DataAccessManager.GetQueryProvider<Appointment>(); 
    } 

и это для экономии

 if (this.Patient.Appointments== null) 
      this.Patient.Appointments= new Iesi.Collections.Generic.HashedSet<Appointment>(); 
     this.Patient.Appointments.Add(this); 

     if (this.Doctor.Appointments== null) 
      this.Doctor.Appointments= new Iesi.Collections.Generic.HashedSet<Appointment>(); 
     this.Doctor.Appoint.Add(this); 
     Entity ent = base.Save(); 
     return ent; 

     //the base call: 
     DataAccessManager.StartOperation(); 

     try 
     { 
      Entity t = DataAccessManager.Save<Entity>(this); 
      DataAccessManager.EndOperation(); 
      return t; 
     } 
     catch (NHibernate.HibernateException ex) 
     { 
      //handling   } 

//the Data Access save method 

public T Save<T>(T t) where T : Entity 
    { 

     try 
     { 

      CurrentSession.SaveOrUpdate(t); 

      return t; 
    } 
///exception handling and stuff 
    } 

я закончить сеанс с Commit() и Disconnect().

ответ

0

Не обращайте на это внимания, я не устанавливал ассоциации перед сохранением.

Смежные вопросы