ORMLITE 是否支持 Table 变量作为存储过程参数?

Does ORMLITE support Table Variable as stored procedure parameter?

我正在为我的 DAL 使用服务堆栈 ORMLIte,到目前为止它非常适合基本的 CRUDS。但是,我确实有一个特殊情况,我必须调用参数类型为 Table 变量的存储过程。现在,我知道 ADO.NET 通过 c# 调用 DataTable 类型的数据库来支持这一点。但是,我不知道 ORMLite 是否支持它,因为我在文档中没有看到任何示例,如果支持,是否有任何示例?

是的,这是一个示例函数,已更新以与 TVP 一起使用(最初使用 OrmLite T4 模板生成然后我修改),希望这有帮助。我正在传递一个 HashSet 以用于构建 DataTable 以作为 TVP 参数传递:

        public static OrmLiteSPStatement CallMyStoredProcTVP(this IDbConnection db, HashSet<int> userids)
    {
        // need to create a datatable to pass as a parameter to your tvp SP
        DataTable dataTableUserIds = new DataTable();
        dataTableUserIds.Columns.Add("Value", typeof(Int32));
        foreach (int id in userids)
        {
            DataRow ro = dataTableUserIds.NewRow();
            ro[0] = id;
            dataTableUserIds.Rows.Add(ro);
        }

        // create db command
        var dbCmd = (DbCommand)OrmLiteConfig.ExecFilter.CreateCommand(db).ToDbCommand();
        // set name of SP
        dbCmd.CommandText = "MyStoredProcTVP";
        dbCmd.CommandType = CommandType.StoredProcedure;
        // add new parameter but I leave off the Type
        dbCmd.Parameters.Add(CreateNewParameter(dbCmd, "UserIDs", dataTableUserIds, ParameterDirection.Input));
        return new OrmLiteSPStatement(db, dbCmd);
    }

    private static DbParameter CreateNewParameter(DbCommand dbCommand, string paramName, object paramValue, ParameterDirection paramDirection)
    {
        DbParameter param = dbCommand.CreateParameter();
        param.Direction = paramDirection;
        param.ParameterName = paramName;
        param.Value = paramValue;
        return param;
    }