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

发布于 2024-11-07 04:24:11 字数 308 浏览 0 评论 0原文

我的应用程序中有一组已填充的自定义业务对象,我将使用存储过程将其插入到 SQL 2005 DB 中。馆藏规模不大,大概有20-30件。

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

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

I have a collection of populated custom business objects in my app which I'm going to insert into a SQL 2005 DB using a stored procedure. The collection size isn't massive, maybe 20-30 objects.

Is there an elegant way to insert all of these objects into the DB in one go without doing something like the following?:

  • Open DB conn
  • For each item in collection ...
  • Set parameter values of SP from item.properties for SQLCmd
  • SQLCmd.ExecuteNonQuery
  • Clear parameters
  • Next
  • Close DB conn

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

淡墨 2024-11-14 04:24:11

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

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

Table valued paramaters if you are using Sql 2008.

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

∞梦里开花 2024-11-14 04:24:11

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

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

You could serialise all your objects into a text format JSON or whatever, pass the string to a SPROC with one input parameter, then de-serialise the objects and iterate them within the SPROC.

You'll still have to do individual inserts but it's one operation from your application.

彼岸花ソ最美的依靠 2024-11-14 04:24:11

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

Use a stored proc to get all resultsets in one go?

帅的被狗咬 2024-11-14 04:24:11

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

You could programatically create a dynamic sql query to generate a large insert statement and execute that in one go, or do as you're currently doing. Your way is probably best as you can deal with errors better should one of the inserts fail.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文