2014-11-14 59 views
0

存儲過程我想ID列表傳遞給使用Simple.Data存儲過程。傳遞表參數與Simple.Data

我的存儲過程是......

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

想通了 - 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的語法非常笨重,但它可以被重構在視線之外。