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条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥60 求一个简单的网页(标签-安全|关键词-上传)
    • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
    • ¥15 基于卷积神经网络的声纹识别
    • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
    • ¥100 为什么这个恒流源电路不能恒流?
    • ¥15 有偿求跨组件数据流路径图
    • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
    • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
    • ¥15 CSAPPattacklab
    • ¥15 一直显示正在等待HID—ISP