2010-04-16 60 views
1

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

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

有没有更好的方法来做到这一点与LINQ?或者这是事实上的标准?

+1

你的意思是* Linq to SQL *? – 2010-04-16 22:37:51

+0

我主要对LINQ to SQL感兴趣,但我不想让人们不把LINQ引用到数据集。当所有事情都说完之后,我只是寻求经验丰富的人员在处理数据集,SQL和各种LINQ时可能意识到的最佳实践和/或管道捷径。 – Mayo 2010-04-19 13:33:57

回答

2

创建对象并插入它们很好。但为了避免最后的巨大承诺,您可能需要每隔100行执行一次SubmitChanges()

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

编辑2010-04-19:如果你想使用一个交易,在这种情况下,您需要在L2S中明确地管理自己的事务(请参见http://msdn.microsoft.com/en-us/library/bb386995.aspx)。如果遇到任何故障,请在try/catch中运行查询并回滚事务。建议

最后两个位:

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

假设我想把所有东西都捆绑到一个事务中,那么在每一个100条记录或者一个巨大的提交结束处进行提交会更合适吗?或者我已经通过Web应用程序导入了这么多的数据,从而通过了“合理的解决方案”? :) – Mayo 2010-04-19 13:37:09

+0

太多评论中说;改为编辑答案。 – roufamatic 2010-04-19 17:47:52

1

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

+0

有趣的想法 - 我会尝试今天花一些时间。 – Mayo 2010-04-19 13:37:58