我想使用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());
任何解决方案或确认不支持此操作?
答案 0 :(得分:0)
想出来 - 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的语法非常笨重,但可以在视线之外重构。