【问题标题】:Update table : Dataset or LINQ更新表:数据集或 LINQ
【发布时间】:2013-01-22 18:11:55
【问题描述】:

我正在尝试根据从 Web 应用程序加载到数据表中的输入 csv 文件对 SQL 表执行插入/更新/删除操作。目前,我正在使用 DataSet 进行 CRUD 操作,但想知道使用 LINQ 优于 DataSet 是否有任何优势。我假设代码将减少并且类型更强大,但不确定是否需要切换到 LINQ。任何意见表示赞赏。

编辑

这不是批量操作,CSV 最多可以包含 200 条记录。

【问题讨论】:

  • 一旦你决定做错了,怎么做就变得无关紧要了。您应该让您的 dbms 来执行此操作。
  • 如果数据库是 SQL Server,例如可以使用 SSIS 进行批量操作。
  • @TonyHopkinson,它是对现有应用程序的修改。所以我受限于我可以在这里使用的技术。我知道 SSIS 非常适合这个,但这里不是一个选择。由于它的 SQL Server 2005,我什至不能传递表参数。
  • 为什么需要 DataSet 或 LINQ 来更新 200 行?这是你可以很容易地用表值参数做的事情(我想效率也会更高)。
  • 是的,那会是更好的选择,但 SQL Server 2005 不支持表值参数。

标签: c# asp.net linq sql-server-2005 dataset


【解决方案1】:

我使用了非常快的LumenWorks CSV reader。它有自己的 API 用于提取数据,使用 IDataReader 接口。这是取自 codeplex.com 的一个简短示例。我将它用于我所有的 CSV 项目,因为它读取 CSV 数据的速度非常快。我对它的实际速度感到惊讶。

如果您要从这样的阅读器出发,那么您实际上是从数据阅读器 API 出发,因此可能会更轻松地使用数据表(您可以创建与结果集匹配的 DataTable 并轻松复制列与列匹配的数据)。

使用 LINQ 的许多更新可能会变慢,这取决于您使用的是实体框架还是其他东西,以及您使用的是什么风格。一个数据表,恕我直言,可能会更快。我在使用 LINQ 和跟踪大量对象时遇到了问题(如果您使用的是附加实体,而不是使用 POCO)。从 Lumenworks 获取 CSV 文件并将其复制到 DataTable 中,我的表现非常好。

【讨论】:

  • 是的,我遇到了这个开源库以及另一个,FileHelpers。它肯定会帮助我将 CSV 解析为数据表,但我的问题是如何根据解析的数据对表执行 CRUD 操作。
  • 哦,是的,对不起,我没有解决这个问题。我会在上面更新我的回复。
  • 感谢您更新答案。因此,似乎 LINQ 不值得考虑。我正在考虑将列表作为 XML 数据类型传递给 DataSet,因为它从 Web 应用程序中删除了大量代码,并且还提供了更好的错误处理。使用,DataSet,如果插入/更新/删除中的任何一个有错误,它就会失败。
  • 我将其标记为答案,因为它包含可能对其他人有帮助的所有详细信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多