1

私はこの独立した基準を持っています:

DetachedCriteria students = DetachedCriteria.For(typeof(Submission)) 
.SetProjection(Projections.Property("ID"))
.Add(Restrictions.In("JicsStudent.HostID", visiblestudents));

visiblestudents はList<string>. 2100 のパラメーター制限に遭遇するまでは、十分に機能します。visiblestudents は、sproc にクレイジーなビジネス ロジックを持つ別のクエリによって入力されます。sproc からの戻り値は、linq でフィルター処理され、list<string>

私の質問はlist<string>、SQL エラーを防ぐために を sproc に置き換える方法はありますか? これまでスタックオーバーフローで見つけたものはすべて、リストを使用して一時テーブルを作成してから結合を使用する必要があることを示唆していますが、私のリードは一時テーブルを使用しないことを好むでしょう.

4

1 に答える 1

0

希望どおりに機能するように見える解決策を見つけました。

var n = new object[2];
var o = new IType[2];

DetachedCriteria students = DetachedCriteria.For(typeof (Submission))
.SetProjection(Projections.Property("ID"))
.Add(Expression.Sql("{alias}.StudentUserID in (select UserId from RMS_udfVisibleStudents(?, ?))", n, o));
于 2012-08-21T14:39:26.443 に答える