我看到Session.Find(字符串查询,object []值,IType []类型)已过时,建议使用CreateQuery()。SetParameterList()。List()代替。
所以如果我已经有了这样的代码:
var query = "from TABLE t where t.COL1 = ? and t.COL2 = ?";
var vals = new[] { qc1, qc2 };
var types = new[] { ScalarType.String, ScalarType.String };
Session.Find(query, vals, types);
我将传递给SetParameterList的名称参数?
答案 0 :(得分:2)
您正在寻找的东西可能是这样的:
session.CreateQuery("from Entity t where t.COL1 = :col1 and t.COL2 = :col2")
.SetString("col1", qc1)
.SetString("col1", qc2)
.List<Entity>();
.SetParameterList(...)
以ICollection
为参数,可以使用,例如使用in
子句:
session.CreateQuery("from Entity t where t.COL1 in (:cols)")
.SetParameterList("cols", new [] { "someValue", "anotherValue", "etc"})
.List<Entity>();
答案 1 :(得分:0)
我想我必须这样做:
var q = Session.CreateQuery(query);
for (int i = 0; i < vals.Length; i++)
{
q.SetParameter(i, vals[i], types[i]);
}