Я получил службу WCF, в которой есть простой метод GetLineBusses.
public MobileResponse GetLineBusses(MobileRequest Request)
{
MobileResponse response = new MobileResponse();
using (var entities = new NerdeBuOtobusEntities())
{
Line line = null;
List<Point> points = new List<Point>();
City city = entities.Cities.SingleOrDefault(t => t.ID == Request.CityID);
try
{
line = entities.Lines.SingleOrDefault(t => t.ID == Request.LineID);
//if (line != null)
//{
// points = entities.Points.ToList().Where(t => t.LineID == Request.LineID && Request.WithPoints == true).ToList();
//}
}
catch (System.Exception ex)
{
}
FetcherManager fetcherManager = new FetcherManager(city);
List<Bus> busses = fetcherManager.GetLineBusses(line);
List<BusDTO> busDtos = new List<BusDTO>();
foreach (Bus bus in busses)
{
BusDTO aBus = new BusDTO(bus);
busDtos.Add(aBus);
}
response.Points = points.Select(t => new PointDTO(t)).ToList();
response.Busses = busDtos;
}
return response;
}
Я заметил, что когда я публикую вышеописанный метод, каждый запрос к методу увеличивает использование памяти рабочего процесса IIS до 160 000кб.Чтобы выяснить проблему, я прокомментировал
City city = entities.Cities.SingleOrDefault(t => t.ID == Request.CityID);
и
line = entities.Lines.SingleOrDefault(t => t.ID == Request.LineID);
Теперь, когда использование оперативной памяти для метода сведено к 20000.Я думаю, что проблема из-за структуры сущностей, особенно LINQ.Кстати, я пробовал статические запросы, чтобы уменьшить использование памяти, однако это не сработало вообще.Как я могу решить эту проблему?Я хочу свести к минимуму использование оперативной памяти с помощью LINQ ...
С уважением
Kemal