Проблема в следующем: Имеются в БД таблицы со связью некоторых таблиц многие ко многим (Отображу в виде классов EntityFramework):
class Device
{
....
public string DeviceProperty { get; set; }
public virtual ICollection<DeviceList> DeviceElementList { get; set; }
....
}
class Element
{
...
public string ElementProperty { get; set; }
public virtual ICollection<DeviceElement> DeviceElementList { get; set; }
...
}
class DeviceElement
{
...
public virtual Device Device { get; set; }
public virtual Element Element { get; set; }
...
}
Загружаем данные в таблицу DataGrid, используя ленивую загрузку:
using (DBContext context = new DBContext())
{
var data = from d in context.DeviceElements
where ...
select d;
dataGrid.ItemsSource = data.ToList();
dataGrid.Items.Refresh();
}
В результате, в таблицу загружаются поля через биндинги типа
... Binding={Binding Path = Device.DeviceProperty} ... и
... Binding={Binding Path = Element.ElementProperty} ... и т.д.
Всё вроде хорошо, но когда строк больше 5 тысяч(в моем случае) и каждая таблица имеет минимум 10 полей, включая поля не с базовыми типами данных, то, к примеру, вывод нескольких отсортированных строк с данными может длиться около 7-10 секунд.
Решил использовать прямую загрузку, но в этом случае данные, видимо, нужно хранить где-то в кэше?
Пробовал так:
using (DBContext context = new DBContext())
{
context.DeviceElements.Load();
dataGrid.ItemsSource = context.DeviceElements.Local.ToBindingList();
dataGrid.Items.Refresh();
}
Без разницы вообще!.. Как можно сделать загрузку данных в таблицу более оптимизированной что ли, чтобы не ждать такое огромное количество времени сортировку. Возможно, чтобы данные, загружались куда-то в кэш, а потом при повторной загрузке просто дописывались отсутствующие данные, либо удалялись уже отсутствующие в основной БД???.
Дополню:
При загрузке всех данных таблицы, без сортировки, загрузка проходит гораздо быстрее (секунды 2), против отсортированных данных (~7 секунд),
т.е. если запрос вернёт только несколько строк - на это уйдет тех же 7 секунд
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть DataGrid, ItemsSource которого является List<Author>В классе Author есть публичное свойство List<Book>
Есть кнопка которая при нажатии запускает действие, и при повторном нажатии останавливает
я получаю из базы данных строку следующего типа 1,2,3,4,5 Мне нужно заполнить массив int этими значениями и посчитать их кол-во (в данном случае...