asp.net - 从 .Net 应用程序传递参数与表值参数与 XML 到 SQL 2008

标签 asp.net sql-server xml stored-procedures

由于我们正在开发一个 asp .net 项目,因此当需要更新/插入多行时,可以通过三种方式将数据更新到数据库中

假设我们需要更新员工教育详细信息(可能是 1、3、5 或 10 条记录)

更新数据的方法

  1. 将值作为参数传递(传统方法),如果有 10 条记录,则需要 10 次往返

  2. 将数据作为 xml 传递并在存储过程中编写逻辑以从 xml 获取数据并更新表(只需要单次往返)

  3. 使用表值参数(只需要单次往返)

注意:数据以列表形式提供,因此如果需要传递,我需要将其转换为 xml 或任何其他格式。

没有。在整个应用程序中我们需要批量(或多条记录)更新数据的地方

我只需要你的建议

  1. 哪种方法会更快(如果有其他开销请说明)

  2. 任何方法的可管理性或可测试性问题

  3. 任何方法的任何其他瓶颈或问题(序列化/反序列化问题或对数据传递大小的限制)

  4. 您为相同操作建议的任何其他方法

谢谢

最佳答案

表值参数方法很可能是最好的方法,因为您可以一次更新整批行;毕竟,您得到了一个表格,您可以轻松加入它。

其他方法要么是逐行的,本质上速度较慢,要么需要在 SQL Server 方面进行一些处理;通常,这不仅不是很有趣,而且比简单地连接两个表更容易出错,而且通常性能更差。

这正是引入 TVP 的场景 - 解决“逐行”或“混淆 XML”的问题。我相信 Microsoft 有充分的理由引入此功能,如果他们这样做,您一定要好好尝试一下,看看它是否有效。

但再次强调:这只是一种“直觉”,并没有真正了解您的所有详细信息。只有您自己通过测试所有三个选项才能真正找到答案。还有许多其他效果和参数可能会发挥作用,任何回答的人都不可能知道......

关于asp.net - 从 .Net 应用程序传递参数与表值参数与 XML 到 SQL 2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1951565/

相关文章:

c# - 使用 XPath、C# 解析 XML 文档

asp.net - Visual Studio 2005/2008 中的“不支持解析 "Validation (): Element ‘xxxx’”警告

c# - EF Core 和大流量导致达到最大池大小错误

asp.net - 对嵌套母版页使用继承

sql-server - 如何减少 SQL Server 事务日志的使用

sql - 在SQL Server中选择特定范围内的随机数

.net - 使用 Amazon RDS SQL Server 的 .NET Windows 窗体应用程序的安全模型

xml - XSLT-2.0 IF 语句/分组

java - 如何纠正这个: Content is not allowed in prolog

c# - 从不同的代码隐藏更改 ascx 内容