NHibernate: Теперь, когда Session.Find () устарел, как мне заменить это? - PullRequest
1 голос
/ 16 сентября 2010

Я вижу, что Session.Find (строковый запрос, значения объекта [], типы 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?

Ответы [ 2 ]

2 голосов
/ 16 сентября 2010

То, что вы ищете, вероятно, примерно так:

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>();
0 голосов
/ 16 сентября 2010

Я думаю, что должен сделать это:

var q = Session.CreateQuery(query);
for (int i = 0; i < vals.Length; i++)
{
  q.SetParameter(i, vals[i], types[i]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...