我有一个 int[] 并将其作为参数传递给一个过程,当调用该方法时,没有报告错误,但数据库中没有任何更新。我的 Add() 可能有问题,因为存储过程是由另一个程序员编写的。我无法修改此存储过程,因此必须在 Add() 中解决所有问题。
仅供参考, Add() 将一组用户 ID 和一个组 ID 作为参数,格式化它们并运行存储过程。存储过程将 userIDs 和 groupID 插入 DB
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
存储过程
USE [xyz]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spSaveSomething]
@groupID INT,
@userIDs TEXT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @handle INT
EXEC sp_xml_preparedocument @handle OUTPUT, @userIDs
DELETE FROM tbl1 WHERE i_GroupID = @groupID AND i_NetworkUserID IN (SELECT [ID] FROM OPENXML (@handle, 'ROOT/VAL', 1) WITH ([ID] INT))
INSERT INTO tbl1 (i_NetworkUserID, i_GroupID)
SELECT [ID], @groupID FROM OPENXML (@handle, 'ROOT/VAL', 1) WITH ([ID] INT)
EXEC sp_xml_removedocument @handle
END
添加()
public void AddUsers(int[] UserIDs, int GroupID)
{
List<int> testList = new List<int>();
foreach (int id in UserIDs)
{
testList.Add(id);
}
XmlSerializer xs = new XmlSerializer(typeof(List<int>));
MemoryStream ms = new MemoryStream();
xs.Serialize(ms, testList);
string resultXML = UTF8Encoding.UTF8.GetString(ms.ToArray());
SqlParameter param1 = new SqlParameter("@userIDs", resultXML);
SqlParameter param2 = new SqlParameter("@groupID", GroupID);
context.Database.ExecuteSqlCommand("spSaveSomething @groupID, @userIDs",
param2, param1);
}