0

我有像这样的 IQueries:(为简单起见,下面的 IQueries 只是傻瓜,事实上我有不同的方法来创建 Iquery)

IQuery q1 = "select q from Quarter where q.QuarterID = :QuarterID";
q1.SetParameter("QuarterID",14);
IQuery q2 = "select m from Month where m.QuarterID= :QuarterID";
q2.SetParameter("QuarterID",12);

然后我将它们添加到 Multiquery 并执行它:

IMultiQuery iMultiQuery = session.CreateMultiQuery();

iMultiQuery.Add(q1);

iMultiQuery.Add(q2);

Ilist _result = iMultiQuery.List();//This gives an error saying :

命名参数 QuarterID 用于多个查询。为您的参数提供唯一名称,或使用多查询 SetParameter() 方法设置命名参数。

注意:我在很多地方都有多重查询。但是,在我们没有使用参数化来创建 Iquery 之前。自从我们开始使用参数化查询以来,我就面临着这个问题。

我发现这里记录了同样的问题

4

1 回答 1

0

我认为该错误清楚地说明了您面临的问题以及如何解决它。在添加到同一个 MultiQuery 的查询中使用不同的参数名称,问题就解决了。

IQuery q1 = "select ... from Quarter q where q.Id = :qid1";
q1.SetParameter("qid1", 14);
IQuery q2 = "select ... from Quarter q where q.Id = :qid2";
q2.SetParameter("qid2", 12);

var mq = session.CreateMultiQuery();
mq.Add (q1);
mq.Add (q2);
于 2013-07-17T13:45:10.047 回答