Самый быстрый способ извлечь из SQL Lite в C # - PullRequest
2 голосов
/ 22 июля 2010

У нас есть одна таблица (25 столбцов int, text и datetime), содержащая около миллиона записей, и нам нужно извлечь их из базы данных SQL Lite и затем отобразить в wpf xamDataGrid, что является самым быстрым способом выполнения это в C #?

ПЛЮС, что было бы наиболее эффективным способом сделать это?

Опции, о которых мы думали:

  • Получение набора данных

  • Список объектов

  • DataReader

  • Массив CSV

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 22 июля 2010

Вы можете загрузить данные, используя фоновый поток, и заполнить ObservableCollection с помощью диспетчера основного потока, приоритет которого - ContextIdle.

Dispatcher UIDispatcher = Dispatcher.CurrentDispatcher;
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += (sender,e) =>
{
    // Use a linq query to yield an IQueryable/IEnumerable List of data from DB
    foreach(Data data in DataList)   // Enumerated here
    {
        UIDispatcher.Invoke(DispatcherPriority.ContextIdle, new Action(() => 
        { 
            myOC.Add(data);
        }));
    }    
};
1 голос
/ 22 июля 2010

DataReader - это обычно самый быстрый способ подключения к базе данных sql. Вы можете читать их и анализировать вручную в свою собственную коллекцию объектов.

Entity Framework предоставит вам лучший опыт разработки на стороне приложения и лучший уровень абстракции моделирования, но с падением производительности. Сущности очень легко и просто привязываются к элементам пользовательского интерфейса WPF.

DataSet прост в настройке, но принудительно вводит абстракцию реляционной базы данных в код приложения. Это заставит вас ссылаться на столбцы как на строки не типичным безопасным способом, который будет ломаться только во время выполнения, и, как правило, является хрупким и больше не рекомендуется для каких-либо значимых проектов. (до того, как поклонники DataSet спрыгнули мне в горло, это официальное руководство MSFT ecn.channel9.msdn.com/o9/te/NorthAmerica/2010/pptx/DEV324.pptx)

Массив CSV может быть быстрым, но гораздо сложнее работать и внедрять.

Я бы сказал, что если вам нужна максимальная производительность, переходите на DataReader, но если вам нужна производительность для разработчиков, переходите на Entity Framework.

...