Я пытаюсь использовать Entity Framework для своей модели / доступа к данным, и сталкиваюсь с проблемами скорости, надеюсь, кто-то может помочь?
Я использовал диаграмму EF с генератором кода по умолчанию для генерации частичных классов, описывающих все, что будет сохраняться. Затем у меня есть частичные классы с методами и непостоянными свойствами. Это могут быть простые вещи, такие как полное имя как объединенные имена / фамилии или производные от связанных сущностей, такие как общий запас как сумма сбора количества местоположений запасов.
Любые методы доступа к связанным сущностям работают, но кажутся очень медленными. Вот пример особенно медленного, он занимает около 6-7 секунд:
Краткое описание вовлеченных лиц:
поставщик -> поставляет много строк поставщика, каждая имеет себестоимость
SupplierLine -> разбитый на СтокЛайнс
StockLine -> имеет много локаций, каждая локация имеет количество
Итак, я пытаюсь добавить метод для получения общей стоимости акций от поставщика, то есть mySupplier.StockValue (), который, очевидно, должен быть суммой себестоимости х общего количества для каждой строки поставщика и его линий запаса.
Я сделал это в качестве функции в Поставщике как:
Public Function StockValue() As Decimal
Return SupplierLines.
Sum(Function(sul) sul.LastPrice * sul.StockLines.Sum(Function(skl) skl.Locations.Sum(Function(l) l.Quantity)))
End Function
Что дает правильные результаты, но на это уходит вечность.
Есть мысли о том, как мне добиться лучших результатов?
- Я хочу, чтобы мои классовые модели оставались невежественными
- Я хочу, чтобы вся моя логика была проверена на компиляцию
- Я хочу, чтобы все было легко тестируемым с использованием поддельных источников данных
- Я не хочу предварительно загружать эту информацию, потому что она не всегда нужна