在.Net中没有RBAR的情况下,将多个业务对象放入数据库(一次性)的优雅方法?

时间:2011-05-13 10:05:49

标签: .net sql vb.net sql-server-2005

我的应用程序中有一组已填充的自定义业务对象,我将使用存储过程将其插入到SQL 2005 DB中。集合大小不大,可能是20-30个对象。

是否有一种优雅的方法可以一次性将所有这些对象插入到数据库中而不执行以下操作?:

  • 打开DB conn
  • 对于集合中的每个项目......
  • 从SQLCmd
  • 的item.properties设置SP的参数值
  • SQLCmd.ExecuteNonQuery
  • 清除参数
  • 下一步
  • 关闭DB conn

4 个答案:

答案 0 :(得分:3)

如果您使用的是Sql 2008,则表值参数。

http://www.sommarskog.se/arrays-in-sql-2008.html

答案 1 :(得分:1)

您可以将所有对象序列化为文本格式JSON或其他,将字符串传递给带有一个输入参数的SPROC,然后对对象进行反序列化并在SPROC中迭代它们。

您仍然需要进行单独插入,但这是您应用程序中的一项操作。

答案 2 :(得分:1)

使用存储过程一次性获取所有结果集?

答案 3 :(得分:-1)

您可以以编程方式创建动态SQL查询以生成大型插入语句并一次执行,或者按照您当前的操作执行。你的方式可能是最好的,因为如果其中一个插入失败,你可以更好地处理错误。