Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MySQL中,如何将一组对象传递给存储过程?_C#_Mysql_Stored Procedures - Fatal编程技术网

C# 在MySQL中,如何将一组对象传递给存储过程?

C# 在MySQL中,如何将一组对象传递给存储过程?,c#,mysql,stored-procedures,C#,Mysql,Stored Procedures,在我的C#代码中,我将填充字典。 我需要以最有效的方式将数据放入MySQL表中 是否可以将其传递给MySQL存储过程?我想我可以将其以某种字符串形式传递,并使用逗号等,这样存储过程就可以调用函数来解析字符串并填充表,但这很痛苦 还有其他想法吗 谢谢 根据到目前为止的评论,让我尝试显示我正在处理的代码/sudocode。 构建字典的代码如下所示: private void DistributeCallsToReschedule() { CallTimeSpa

在我的C#代码中,我将填充字典。 我需要以最有效的方式将数据放入MySQL表中

是否可以将其传递给MySQL存储过程?我想我可以将其以某种字符串形式传递,并使用逗号等,这样存储过程就可以调用函数来解析字符串并填充表,但这很痛苦

还有其他想法吗

谢谢

根据到目前为止的评论,让我尝试显示我正在处理的代码/sudocode。 构建字典的代码如下所示:

        private void DistributeCallsToReschedule()
    {
        CallTimeSpacing = GetNumMinutesInNextCallWindow() / callsToReschedule.Count;

        DateTime currTimeToCall = new DateTime(); 
        foreach (int id in callsToReschedule)   
        {
            CallIdTimeToCallMap.Add(id, currTimeToCall);
            currTimeToCall.AddMinutes(CallTimeSpacing);
        }
    }
因此,字典可以包含我的条目

我希望能做的是将字典传递给存储过程,如下所示。 如果这是不可能的,那么执行存储过程指示的最有效的方法是什么;即, 存储过程希望有一个要连接到的表,该表将来自指令的数据填充到C#代码中。换句话说,在MySQL中,将字典数据放入表中最有效的方法是什么?如果这是不可能的,我必须循环,那么最有效的方法是什么:迭代调用存储过程?构建一个包含所有值的准备好的语句(我想是通过StringBuilder构建的)

通过C#代码传递给存储过程的参数:
@CallidTimeLocallMap

将@CallidTimeocallMap放入CallidTimeocallMapTable

更新cr 设置cr.TimeToCall=map.TimeToCall 来自callRequest cr 上的内部联接CallidTimeLocallMapTable映射
cr.id=map.id

在任何关系数据库处理对象之前,必须将对象映射到表和列。对象不是关系

您不会说存储过程期望的参数是什么

如果是需要大量对象的插入或更新,我想知道存储过程是否是正确的答案。您必须重复调用它,一次为集合中的每个对象写入行。我会考虑准备好的语句、绑定变量和批处理,这样就可以在一次往返中完成。
这个装置是一个单一的工作单元吗?您是否考虑过事务行为?

为什么要使用存储过程而不是简单的insert语句?您可以创建一个接受列表对象的函数,该函数内部有一个执行insert的foreach循环,也可以创建一个简单的insert存储过程。。通过代码展示到目前为止您已经尝试了什么或您正在尝试做什么…谢谢,达菲莫。该参数本质上是一个对象列表,其中对象有两个字段。其思想是将它们插入MySQL中的一个表中,该表包含这两列。我肯定想给db打一个电话,所以一个准备好的语句会比多次调用存储过程更有效吗(我想是的,但我想听听你的意见)。“批处理”是什么意思?是的,我将在一个事务中完成此操作。HTTP不知道或不关心对象列表。每个实例都是表中的一行。您必须将对象数据转换为表和列,并对每个对象调用一次以插入每一行。