使用LINQ将数据从数据集插入到SQL

时间:2010-04-16 21:44:42

标签: asp.net sql linq

假设我在ASP.NET网站(.NET 3.5)中有一个包含5个表的数据集,每个表大约有30,000行,平均有12列。我想将数据集中的所有数据插入到SQL Server 2008中的5个非常相似但不完全相同的表中。我还想使用LINQ(个人偏好 - 尝试学习新东西)。

是否像迭代数据集一样简单,并且对于每一行,创建关联类的新实例,使用数据集的行初始化其数据,将其添加到数据模型,然后在数据模型中执行一个巨大的SubmitChanges。结束?

使用LINQ有更好的方法吗?或者这是事实上的标准吗?

3 个答案:

答案 0 :(得分:2)

创建对象并插入它们很好。但是为了避免最后的巨大提交,您可能希望每100行左右执行一次SubmitChanges()

如果您有现金,也可以获得Red Gate的“SQL数据比较”实用程序的副本。然后你再也不必写下这些东西了。 : - )

编辑2010-04-19 :如果您想使用交易,我认为您仍然应该使用我的方法而不是单个SubmitChanges()。在这种情况下,您需要在L2S中明确管理自己的事务(请参阅http://msdn.microsoft.com/en-us/library/bb386995.aspx)。如果出现任何故障,请在try / catch中运行查询并回滚事务。

最后两点建议:

  1. 确保将ASP.NET超时设置得足够高。
  2. 考虑打印出某种进度指标。它使运行这些长期运行的东西更加可口。

答案 1 :(得分:2)

Linq To Sql原本没有像SqlBulkCopy class这样的东西。我做了一个快速搜索,看起来有一个implementation for Linq To Sql。没有任何线索,如果它有任何好处,但检查它不会有害。

答案 2 :(得分:1)

DataContext.ExecuteCommand可以与任意SQL语句一起使用。你可以做一个“INSERT FROM”。