使用 Simple.Data 将表参数传递给存储过程



我想使用 Simple.Data 将 Id 列表传递给存储过程。

我的存储过程是...

CREATE TYPE IntValue AS TABLE (Value INT)
GO
CREATE PROCEDURE testTableSproc
    @items IntValue READONLY
AS
SELECT * FROM @items

到目前为止,我已经尝试过...

public class IntValue
{
    public int Value { get; set; }
}
var db = Database.OpenNamedConnection("MyConnection")
var array = new int[] {1, 2, 3};
List<IntValue> results = db.testTableSproc(items: array);

List<IntValue> results = db.testTableSproc(
    items: array.Select(x => new IntValue{ Value = x}).ToArray());

任何解决方案或确认不支持此功能?

想通了 - Simple.Data 接受 DataTable 作为类型。

        var db = ConnectionFactory.GetConnection();
        var tbl = new DataTable("items");
        tbl.Columns.Add("Value");
        var row1 = tbl.NewRow();
        row1["Value"] = 1;
        tbl.Rows.Add(row1);
        var row2 = tbl.NewRow();
        row2["Value"] = 2;
        tbl.Rows.Add(row2);
        var row3 = tbl.NewRow();
        row3["Value"] = 3;
        tbl.Rows.Add(row3);
        List<IntValue> results = db.testTableSproc(items: tbl);

使用DataTables的语法非常笨拙,但可以在看不见的地方进行重构。

相关内容

  • 没有找到相关文章

最新更新