我在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不是同一个类型)