从C#中提取SQLite的最快方法

时间:2010-07-22 02:16:54

标签: .net wpf database c#-4.0

我们有一个表(25列int,text和datetime),有大约一百万个recrds,我们需要从SQL Lite数据库中提取它们然后渲染到wpf xamDataGrid,最快的做法是什么它在C#?

PLUS,最有效的方式是什么?

我们考虑过的选项:

  • 获取数据集

  • 实体清单

  • DataReader

  • CSV数组

提前致谢。

2 个答案:

答案 0 :(得分:3)

您可以使用后台线程加载数据,并使用主线程的Dispatcher填充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 :(得分:1)

DataReader通常是连接到SQL数据库的最快方法。您可以将它们读入并手动将它们解析为您自己的自定义对象集合。

实体框架将为您提供最佳的应用程序开发体验和最佳的建模抽象级别,但性能却受到了影响。实体非常好地绑定到WPF UI元素。

DataSet易于设置,但会以非常丑陋的方式强制关系数据库抽象到您的应用程序代码中。它将强制您以非类型安全的方式将列引用为字符串,这种方式仅在运行时断开,并且通常很脆弱,不再推荐用于任何重要项目。 (在DataSet粉丝咆哮之前,这是MSFT的官方指导ecn.channel9.msdn.com/o9/te/NorthAmerica/2010/pptx/DEV324.pptx)

CSV的数组可能很快,但更难以使用和实现。

我想说如果你需要最佳性能,请使用DataReader,但如果你需要开发人员的工作效率,请使用Entity Framework。