如何使用Linq to SQL将数据快速加载到相应对象的C#列表中?

如何使用Linq to SQL将数据快速加载到相应对象的C#列表中?,c#,linq-to-sql,database-performance,C#,Linq To Sql,Database Performance,我有一个SQLServer2008R2数据库,用于存储web和移动应用程序的数据,我有一个用WPF编写的方便的管理桌面程序,该程序使用LINQtoSQL获取数据 数据库位于远程服务器上,使用Linq到SQL加载数据或执行复杂操作的速度可能是一个大问题。(在新年前夕,即使在午夜的时候,我也要花费半个小时来加载数据,而今天它要花费一个多小时,我只有大约30张表,每表10-20行,甚至最大的表也只有18000行,最多只有10行或100行。)编辑:昨天有些东西把每次加载的速度减慢到了1-3小时,而今天早

我有一个SQLServer2008R2数据库,用于存储web和移动应用程序的数据,我有一个用WPF编写的方便的管理桌面程序,该程序使用LINQtoSQL获取数据

数据库位于远程服务器上,使用Linq到SQL加载数据或执行复杂操作的速度可能是一个大问题。(在新年前夕,即使在午夜的时候,我也要花费半个小时来加载数据,而今天它要花费一个多小时,我只有大约30张表,每表10-20行,甚至最大的表也只有18000行,最多只有10行或100行。)编辑:昨天有些东西把每次加载的速度减慢到了1-3小时,而今天早上它加载了23分钟

管理程序可以快速执行许多复杂的操作,但它通过将大部分数据加载到本地内存中的副本来管理这些操作,因此我可以在C#中本地执行逻辑,而不必与数据库通信,除非我需要更新或更改数据。因此,我加载C#列表,其中的对象包含Linq to SQL类拥有的所有数据成员,但没有链接到数据库,C#中有许多很好的帮助函数和交叉引用

这工作得非常好,除了首先加载数据库数据需要很长时间,我想知道是否有更快的方法

我最终做了这样的事情:

foreach (Blue_Member mem in App.db.Blue_Members)
{
    Members.Add(new Local_Blue_Member(mem));
}
其中,Local_Blue_成员不是Linq to SQL类,而是具有一个构造函数,该构造函数接受一个类并复制其数据的所有值

我还让一些类执行SQL查询,以查找相关数据并将其存储在有用的本地列表中,但我希望这会使SQL调用的数量成倍增加,因此我正在努力解决这一问题


我想知道是否还有其他方法可以更快地从表中加载所有数据。例如,也许有一种方法可以请求批处理表加载,或者说我希望以只读方式加载,这将提高加载速度?

Members=App.db.Blue_Members.ToList()@HamletHakobyan我不记得上一次尝试一行代码是什么时候了@哈姆雷特·哈科比安:嗯,如果这加快了速度,我说不出来。我想今天我的连接可能特别糟糕,因为上次加载花了两个小时,即使按照你的建议将大部分内容转换为加载,这次看起来也一样。请参阅下面的网页。SQLCMD和BCP设计用于归档SQL Server,arre设计为比C#接口效率高100倍。我在C#中使用了一个应用程序,它创建了一个进程,启动sqlcmd.exe来创建一个CSV文件,然后我将CSV读入我的应用程序。与在C#应用程序中执行相同的查询相比,它的工作效率更高,速度更快。在我的例子中,我得到一个10MB的csv文件。我在一个非常大的数据库上使用SQL标准,仅在C#上运行1/2天就需要30分钟。@jdweng谢谢!我会查一查。是的,我开始想“做一个数据库备份并下载…然后在运行程序的机器上加载数据库备份”之类的事情,但是。。。嗯。