Chalet37 2015-03-20 09:45 采纳率: 66.7%
浏览 1308

ADO.NET中如何使用AddWithValue方法给用户自定义类型的参数赋值?

我在sql数据库中注册了程序集并创建了别名为Vector3的自定义的类型,在类库文件中类型名是SqlVector3。已经能够在表和存储结构中使用这个自定义类型。

但我在C#代码中使用AddWithValue方法给一个存储过程的Vector3类型的参数赋值时,却出现了“ArgumentException: The parameter data type of Assets.MyScripts.SqlVector3 is invalid.
System.Data.SqlClient.SqlParameter.InferSqlType (System.Object value)”的错误。

我的代码如下:

 public static void NewSkeletonsData(int userID, int actionID, int groupID, long timeNum, Dictionary<string, Vector3> SkeletonsData)
        {
            SqlCommand cmd = new SqlCommand("NewSkeletonsData", Connection);

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@ActionID", actionID);
            cmd.Parameters.AddWithValue("@UserID", userID);
            cmd.Parameters.AddWithValue("@GroupID", groupID);
            cmd.Parameters.AddWithValue("@TimeNum", timeNum);

            foreach (var element in SkeletonsData)
            {
                cmd.Parameters.AddWithValue("@" + element.Key, new SqlVector3(element.Value.x, element.Value.y, element.Value.z));
            }

            cmd.ExecuteNonQuery();
        }

错误出在foreach内部的AddWithValue中。
请问要如何在C#代码中为自定义类型的参数赋值呢?
(因为是在Unity脚本的一部分,上述代码中的Vector3是Unity封装的Vector3,与自定义的类型Vector3不是同一个类型)

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作
    • ¥15 求NPF226060磁芯的详细资料