0

int[] があり、それをパラメーターとしてプロシージャーに渡します。メソッドが呼び出されると、エラーは報告されませんが、データベースでは何も更新されません。ストアド プロシージャは別のプログラマによって記述されているため、Add() に何か問題がある可能性があります。このストアド プロシージャは変更できないため、すべてを Add() で解決する必要があります。

参考までに、Add() は userID の配列と groupID をパラメーターとして取り、それらをフォーマットして、ストアド プロシージャを実行します。ストアド プロシージャは、userID と 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

Add()

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);

        }
4

2 に答える 2

1

int[]をカンマ区切りの文字列に変換してから、格納された手順で、us inie

WHERE i_NetworkUserID in @UserIds
于 2013-08-07T20:57:24.253 に答える