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

    报告相同问题?

    悬赏问题

    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)