I have a console application that uses NHibernate and ActiveRecord.
I am using the following detached criteria:
DetachedCriteria criteria = DetachedCriteria.For<ServiceOrder>();
criteria.Add(Restrictions.Lt("End", DateTime.Today.AddDays(3)));
criteria.Add(new Disjunction()
.Add(Restrictions.IsNull("StopReason"))
.Add(Restrictions.Eq("StopReason", ServiceStopReason.Worthiness)));
criteria.Add(new Disjunction()
.Add(Restrictions.IsNull("StopDate"))
.Add(Restrictions.EqProperty("StopDate", "End")));
And I am invoking the fetching using ActiveRecordMediator's FindAll() method.
In my model I have this property:
[HasMany(Lazy = true)]
public virtual ISet<ServiceOrder> ServiceOrders
{
get { return serviceOrders; }
set { serviceOrders = value; }
}
Which I'm trying to access to in the following Linq query:
from serviceOrder in serviceOrderDataService.GetServiceOrdersWithEndOfEntitlement()
let accountGetService = serviceOrder.AccountGetService
where accountGetService != null
let serviceOrders = accountGetService.ServiceOrders
where serviceOrders != null && serviceOrders.Count != 0
let isFutureServiceOrder = (from accountGetServiceServiceOrder in serviceOrders
where serviceOrder.Start.HasValue
&& accountGetServiceServiceOrder.End.HasValue
&& serviceOrder.Start > accountGetServiceServiceOrder.End
select accountGetServiceServiceOrder).Any()
where !isFutureServiceOrder
select serviceOrder;
But I am getting the following exception:
Initializing[Danel.Nursing.Model.AccountService#61786367-e8da-4929-b91b-a7497cf7db10]-failed to lazily initialize a collection of role: Danel.Nursing.Model.AccountService.ServiceOrders, no session or session was closed
Does this makes any sense? How do I solve it?