Я надеюсь, что кто-то может помочь мне с блоком мозга, который у меня есть, о том, как сделать несколько соединений с EF, который возвращает сущность, где одно из полей вычисляется по запросу. Я придумал (в значительной степени бесполезный) пример в надежде, что кто-нибудь может помочь мне понять, как это должно быть сделано.
Я хотел бы вернуть список объектов ISP из DBContext со свойством «TotalUsed», заполненным запросом LINQ. Я успешно выполнил соединения (тривиально) и поиграл с группировкой и суммой, но, похоже, не совсем правильно понял.
Общая идея этого надуманного примера заключается в том, что сетевые адаптеры подключены к одному и только одному маршрутизатору, а несколько маршрутизаторов подключены к одному провайдеру.
Как написать запрос LINQ, который суммирует пропускную способность, необходимую для каждого провайдера, наряду с другими свойствами этого провайдера?
Ожидаемый вывод будет список ISP, который может выглядеть
{{1, "foo", 52}, {2, "bar", 345}, {3, "foobar", 621}}, где третье свойство является суммой свойства BandwidthNeeded на всех сетевых картах, транзитивно связанных с ISP .
Занятия:
public class ISP
{
public int ISPid {get; set;}
public int ISPName {get; set;}
public int TotalUsed {get; set;} // not mapped to DB -> should populate via LINQ
}
public class Router
{
public int RouterId {get; set;}
public string RouterName {get; set;}
public int ISPId {get; set;} // foreign key for ISP
}
public class Nic
{
public int NicId { get; set; }
public string NicLocation { get; set; }
public int BandwidthUsed { get; set; }
public int RouterId {get; set; } // foreign key for router
}