匿名托管DynamicMethods程序集

时间:2010-10-18 13:58:59

标签: linq-to-sql

在我的mvc Web应用程序中,我收到此错误:

  

匿名托管DynamicMethods程序
  堆栈跟踪:在Read_<> f__AnonymousType1 4(ObjectMaterializer 1)在system.com.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()at project.com.Concrete.DetailsRepository.GetDetails(String type)in path
  消息:无法将null值分配给类型为System.Int32的成员,该类型是不可为空的值类型。

当我从本地服务器运行我的网站时,它运行正常。 但是当它在远程服务器上运行时,它会给出上述错误

这是我的代码:

var res=
(from r in DetailsTable 
 where r.Activated == true 
 group r by new { r.ActivationDate, r.ProductID, r.SubProductID } into t 
 select new { icount = t.Count(), 
              sActivationDate = t.Key.ActivationDate.ToShortDateString(), 
              iProductID = t.Key.ProductID, 
              iSubProductid = t.Key.SubProductID })
.OrderBy(r => r.icount);

由于 AS

1 个答案:

答案 0 :(得分:0)

您遇到的问题是您的查询在本地服务器上存在数据的远程服务器上为空。

我不确定查询中哪个部分发生异常,所以我建议将查询分成两半。

var res=
     from r in DetailsTable 
     where r.Activated == true;

if(res.Count() == 0)
  return; // or handle gracefully as appropriate

var groups = 
     from r in res
     group r by new { r.ActivationDate, r.ProductID, r.SubProductID } into t 
     select new { icount = t.Count(), 
                  sActivationDate = t.Key.ActivationDate.ToShortDateString(), 
                  iProductID = t.Key.ProductID, 
                  iSubProductid = t.Key.SubProductID })
    .OrderBy(r => r.icount);

我确信在单个查询语句中有一种更优雅的方式,但没有更多细节,我不确定如何继续。