1

我有这个独立的标准:

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

visiblestudents 是一个List<string>. 在我遇到 2100 参数限制之前,它运行良好。visiblestudents 由另一个查询填充,该查询在存储过程中具有一些疯狂的业务逻辑。然后从 sproc 返回的 linq 过滤到一个list<string>

所以我的问题是有没有办法用 sproc 替换list<string>sproc 来防止 SQL 错误?到目前为止,我在 stackoverflow 上找到的所有内容都表明我应该使用列表创建一个临时表,然后使用连接,但我的领导更喜欢我不使用临时表。

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 回答