我最近正在开发一个asp.net Web应用程序。使用linq到SQL ORM的数据访问层(DAL)。在我的查询的特定情况下,在clr级别面临stackoverflow异常。

我使用过滤器表达式生成器来获取特定的数据(例如具有特定约束的负载),我们将1500多个参数发送到存储过程。

注意:我们认为RPC(远程过程调用)限制为2100
sql server默认设置中的参数。

但是我不知道为什么我要面对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();
        }

最佳答案

问题可能出在您正在构建的谓词中。枚举表达式时(在对Count()的调用中正在执行此操作),LINQ to SQL将沿着表达式树确定要查询的内容。您是否可能在某个地方创建循环引用?

关于c# - System.Data.Linq.dll上的stackoverflow异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17809026/

10-14 16:20