0

我有一个接受 int[] (userIDs) 和 int (groupID) 作为参数的方法。然后它运行存储过程并将数据插入数据库

For example:
if userIDs=[1,2,3] and groupID=4, 
then I want the following data to be inserted into the DB
userID    groupID
1            4
2            4
3            4 

对于这个问题,我有 2 个解决方案。第一个是编写一个将单个记录插入数据库的存储过程。在method()中,我会循环遍历int[]并调用存储过程n次

method()
for (int i =0; i< userID.length; i++){
    // call stored procedure to insert a single record
}

第二种解决方案是将 int[] 和 int 作为参数传递给存储过程,并在存储过程中进行循环。

哪种方式是更好的解决方案?(如果它的第二个解决方案更好,有人可以提供在存储过程中处理 int[] 的指导)

4

3 回答 3

1

您不想使用 O/R 映射器有充分的理由吗?您的示例看起来像服务器/代码隐藏,您可以使用实体框架(或其他)插入新值。如果您不能使用它们,那么我将使用 for (您的帖子中的第二个)方法。但这很危险,因为您不在任何交易中。

您可以在此处开始您的实体框架调查:http ://www.asp.net/entity-framework 。如果您出于任何原因无法使用 EF,请考虑为您的 sql 命令使用事务范围(请参阅http://msdn.microsoft.com/en-us/library/777e5ebh.aspx开始阅读)

于 2013-08-07T18:43:08.670 回答
0

Geeeeeeeeeee一般来说,这些东西的代码更快。你最好遍历你的数组,C#端,然后调用一个存储过程来处理你的特定记录。

现在当然细节会发生变化,这听起来当然最好在一个大人物中处理。将您的 int 数组转换为数据表,然后您就可以享受一些真正的乐趣......

于 2013-08-07T17:20:33.913 回答
0

如果您所做的只是向数据库添加行,我认为不需要存储过程(除非这是来自 DBA 或策略的要求)。

只需遍历您的项目并使用 ADO.NET 或实体框架将条目添加到数据库中。

于 2013-08-07T17:31:23.470 回答