我似乎找不到任何好的例子,但是执行此类查询的最佳方法是什么
tbl.Query(SELECT * FROM PRODUCTS WHERE ProductId IN (@Ids)", idlist)
我看到Dapper ORM,你可以放一个列表,它知道该怎么做。你能用 Massive 做到这一点吗,还是我必须构建像 @0,@1,@2 这样的参数并将列表变成数组 idList.ToArray()?
看起来这
是不可能的。当我尝试(在我的情况下ids
是一个数组)时,我收到错误:
No mapping exists from object type System.Int32[] to a known managed provider native type.
这往往让我认为 Massive 在很大程度上让底层 SQL 提供程序处理查询的参数化。所以是的,你将不得不像你说的那样构建参数。你可以做这样的事情:
productTable.Query(string.Format("SELECT * FROM PRODUCTS WHERE ProductId IN ({0})",
string.Join(",", ids.Select((id, ix) => "@" + ix).ToArray())),
ids.Cast<object>().ToArray());