我最近正在开发一个 asp.net Web 应用程序。使用 linq to sql ORM 到数据访问层 (DAL)。在我的查询的特定情况下,在 clr 级别上遇到 stackoverflow 异常。
我使用过滤表达式生成器来获取我们向存储过程发送超过 1500 个参数的特定数据(例如使用特定约束加载)。
注意:我们认为 RPC(远程过程调用)限制是 sql server 默认设置中的 2100 个参数。
但我不知道为什么我会遇到 stackoverflow 异常?有趣的是,这个问题只发生在 iis 上,而在 asp.net Web 开发服务器上没有问题。
而且我几乎发现了导致大量参数的问题。
我感谢帮助我的人?
public List<HSEPersonnelComplexPaging> SelectHSEPersonnelPaging(PagingPropertiesDTO pagingProps, out int recCount)
{
using (HRPaidTimeOffDataContext db = new HRPaidTimeOffDataContext(DBHelper.GetConnectionString()))
{
Expression<Func<HSEPersonnelComplexPaging, bool>> expr =
PredicateBuilder.GetFilterExpression<HSEPersonnelComplexPaging>(pagingProps);
db.DeferredLoadingEnabled = false;
var items = from at in db.HSEPersonnels
where at.IsDeleted == false
select new HSEPersonnelComplexPaging
{
ID = at.HSEPersonnelId,
PersonnelyNo = at.PersonnelyNo,
Name = at.Name,
Family = at.Family,
BirthPlace = at.BirthPlace,
Birthdate = at.Birthdate,
Father = at.Father,
IdNo = at.IdNo,
NationalCode = at.NationalCode,
IsNotActive = at.IsNotActive,
IsDeleted = at.IsDeleted,
InsertDate = at.InsertDate,
UpdateDate = at.UpdateDate,
InsertENTUserAccountId = at.InsertENTUserAccountId
};
var result = items.Where(expr);
recCount = result.Count();
return
result.ApplySortExpression(pagingProps.SortSet).Skip(pagingProps.CurrentPageIndex *
pagingProps.CurrentPageSize).Take(
pagingProps.CurrentPageSize).ToList();
}