将用户定义的表类型传递给Ormlite中的SQL函数

时间:2016-12-27 15:56:05

标签: ormlite-servicestack

我要将表传递给SQL函数(到现在为止我已经传递给存储过程,一切都很好)

考虑以下代码段

        var dataTable = new DataTable();
        dataTable.Columns.Add(new DataColumn("ID", typeof(Guid)));
        foreach (var o in orders)
        {
            var r = dataTable.NewRow();
            r["ID"] = o;
            dataTable.Rows.Add(r);
        }
        var res = db.Exec(cmd =>
        {
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.Add(new SqlParameter("INPUT", dataTable));
            cmd.CommandText = "SELECT * FROM FUNCTION";
            return cmd.ConvertToList<MyObj>();
        });

我不知道在将CommandType指定为Text时是否考虑了参数,我尝试过SQLServer并且它可以工作...... 我究竟做错了什么?这是ServiceStack的OrmLite的限制吗? 感谢

1 个答案:

答案 0 :(得分:1)

在您的示例中手动填充cmd时,您使用的是ADO.NET(即OrmLite),因此您需要找到从ADO.NET调用SQL Server函数的正确方法。

您似乎只能pass a datatable to a UDF from SQL Server 2008+并且要求您的TableType参数是READONLY。