Я отделяю логику своего домена от логики моего веб-сервиса
Это из моего домена и на самом деле получает данные из nHibernate.
public static IList<Location> LoadReturnLocationsFromDatabase(DateTime lastUpdateTime)
{
using (var session = NHibernateHelper.OpenSession())
{
// retreive all stores and display them
using (session.BeginTransaction())
{
var locations = session.CreateCriteria(typeof(Location)).Add(Expression.Gt("LastUpdatedTime", lastUpdateTime)).SetMaxResults(10).List<Location>();
return locations;
}
}
}
Затем эти данные возвращаются в веб-службу, и я использую Automapper для их дублирования, чтобы не подвергать объект доступа к базе данных веб-службе и хранить все отдельно.
public IList<GetLocationDetailsResponse> GetLocationUpdate(DateTime lastUpdateTimeDT)
{
Mapper.CreateMap<Location, GetLocationDetailsResponse>();
IList<Location> locations = WhygoDomain.GetLocations.LoadReturnLocationsFromDatabase(lastUpdateTimeDT);
IList<GetLocationDetailsResponse> getLocationDetails = Mapper.Map<IList<Location>, IList<GetLocationDetailsResponse>>(locations);
return getLocationDetails;
}
Моя проблема в том, что я не могу выполнить сопоставление, если не укажу, что связь между местоположением и состоянием не загружается лениво, потому что веб-служба находится снаружи:
using (var session = NHibernateHelper.OpenSession())
в области данных.
Ленивая загрузка кажется предпочтительным методом выполнения чего-то подобного, поэтому мне интересно, подходит ли этот подход? Это служба экспорта данных, которая будет экспортировать, поэтому использование памяти и т. д. может оказаться проблематичным.
Если мне нужно изменить это, является ли причиной проблемы структура моего кода? Если да, то как я могу отделить логику своего домена и обойти эту проблему?