2012-10-05 39 views
0

SQL我似乎無法找到任何很好的例子,但什麼是做這樣的大規模ORM和功能

tbl.Query(SELECT * FROM PRODUCTS WHERE ProductId IN (@Ids)", idlist) 

我看到小巧玲瓏的ORM,你可以把一個查詢的最佳方式清單,它知道該怎麼做。你可以用Massive做這個,還是必須構建像@ 0,@ 1,@ 2這樣的參數並將列表變成一個數組idList.ToArray()?

回答

0

看起來這不是可能的。當我試圖(ids是在我的情況下,數組)我得到了錯誤:

No mapping exists from object type System.Int32[] to a known managed provider native type. 

這往往讓我覺得大規模很大程度上從而使底層SQL提供交易與查詢的參數。所以是的,你將不得不像你說的那樣建立參數。你可以這樣做:

productTable.Query(string.Format("SELECT * FROM PRODUCTS WHERE ProductId IN ({0})", 
    string.Join(",", ids.Select((id, ix) => "@" + ix).ToArray())), 
    ids.Cast<object>().ToArray());