Получение списка оборудования подкл. к модему

Здравствуйте.

Есть модем с известным id.

var modem = Server.Equipment.GetById(id);

Необходимо получить список оборудования, которое используется в GPRS-подключении. Подключение заведено как “Сетевое”.
Пробовали

var measurePoints = modem.GetRelatedMeasurePoints();

, но точки учета возвращаются без подгруженного Equipment, приходится Refresh’ить каждую точку, на что тратится очень много времени(несколько минут).
Есть ли какое-нибудь другое быстрое решение?
list.png

Поставим вопрос иначе.
Есть ли в Lers Framework метод аналогичный процедуре sp_GetEquipmentListByPollConnectionId?

Сейчас действительно метод Equipment.GetRelatedMeasurePoints не возвращает оборудование точки учёта.

В версии R21 мы добавим возможность запросить список оборудования в этом методе.

Его можно будет вызвать так:
Equipment.MeasurePoints GetRelatedMeasurePoints(MeasurePointInfoFlags.Equipment);

Пока же действительно придётся вызывать Refresh для каждой точки учёта.

Можно было бы запросить список точек учёта с оборудованием, но, к сожалению, это тоже не выход, так как в этом случае у поля MeasurePoint.Device всегда будет пустой список подключений. Это так же будет исправлено в версии R21, но пока не работает.

Пока возможен обходной манёвр:

// Выбираем всё оборудование, у которого есть подключения и у которых в качестве коммуникационного оборудования
// выбран нужный модем.

var equipment = server.Equipment.GetList();
	.Where(e => e.PollSettings != null
			&& e.PollSettings.Connections.Length > 0
			&& e.PollSettings.Connections.Any(c => c.CommDevice != null && c.CommDevice.Id == /*Идентификатор*/));
	.ToDictionary(e => e.Id);

// Выбираем те точки учёта, которые привязаны к оборудованию.

var measurePoints = server.MeasurePoints.GetList(MeasurePointInfoFlags.Equipment);
.Where(x => x.Device != null && equipment.ContainsKey(x.Device.Id));

После выхода R21 можно будет сократить запрос до такого:

var measurePoints = server.MeasurePoints.GetList(MeasurePointInfoFlags.Equipment);
	.Where(x => x.Device != null
			&& x.Device.PollSettings != null
			&& x.Device.PollSettings.Connections.Length > 0
			&& x.Device.PollSettings.Connections.Any(c => c.CommDevice != null && c.CommDevice.Id == /*Идентификатор*/));
	.ToArray();

Или даже до такого:

var modem = server.Equipment.GetById(/*Идентификатор*/);
var mps = modem.GetRelatedMeasurePoints(MeasurePointInfoFlags.Equipment);

Понятно. Пока что пользуемся обходным маневром. Запрос выполняется 14-20 секунд.
Ждём R21 с ускоренным вариантом.