2016-09-10 16 views
1

이 예외에 대한 몇 가지 다른 게시물이 있지만 어느 것도 나를 도왔습니다.하나 이상의 개체가 IComparable을 구현해야합니다. 로컬 컴퓨터에서 작동하지만 서버에서는 작동하지 않습니다.

각각의 솔루션 3 개가 로컬 시스템에서 작동하지만 Live-System/서버에서는 작동하지 않습니다.

PackageViewModels의 수가 증가함에 따라 First Solution은 작업을 중단했습니다. - 두 번째 솔루션 구현. 사용자는 두 가지 항목을 더 추가했으며 두 번째 솔루션은 또한 업무를 중단했습니다. 세 번째는 서버에서 작동하지 않았으며 구현되었습니다. : D

EDIT : - 몇 가지 추가 정보 GetTemplateTypes(), GetTemplateCategories() 및 GetPackages() 함수는 SQL Server 2008에서 ADO.net 원시 SQL을 통해 쿼리 된 모델 목록을 반환합니다. 항상 쿼리 된 데이터를 반환하고 어떤 예외도 던지지 않습니다.

public ActionResult Package_Read([DataSourceRequest] DataSourceRequest request) 
    { 
     try 
     { 
      var templateTypes = DBRepository.GetTemplateTypes(); 
      var templateCategories = DBRepository.GetTemplateCategories(); 
      var templatePackages = DBRepository.GetPackages(); 

// Third Solution, never worked 

      List<PackageViewModel> packageViewModels = new List<PackageViewModel>(); 

      foreach (var templatePackage in templatePackages) 
      { 
       PackageViewModel packageViewModel = new PackageViewModel(); 
       packageViewModel.val1= templatePackage.val1; 
       packageViewModel.val2= templatePackage.val2; 
       packageViewModel.ID = templatePackage.ID; 
       packageViewModel.Type = 
        (from t in templateTypes where t.ID == templatePackage.ID select t).First(); 
       packageViewModel.Category = (from t in templateCategories 
        where t.Category_ID == templatePackage.Category_ID 
        select t).First(); 
       packageViewModels.Add(packageViewModel); 
      } 


// Second Soltuion - Worked for an amount up to 14 packageViewModels 

      var packageViewModels = templatePackages.Select(p => new PackageViewModel 
      { 
       VPackage_ID = p.VPackage_ID, 
       VType = (from t in templateTypes where t.ID == p.VType_ID select t).Single(), 
       VCategory = (from t in templateCategories 
        where t.VCategory_ID == p.VCategory_ID select t).Single(), 
       val1 = p.val1, 
       val2 = p.val2 
      }).ToList(); 




// First Solution - Worked till a specific number of PackageViewModels (about 12) 

      IEnumerable<PackageViewModel> packages = DBRepository.GetPackages() 
       .Select(p => new PackageViewModel 
       { 
        VPackage_ID = p.VPackage_ID, 
        VType = DBRepository.GetTemplateType(p.VType_ID), 
        VCategory = DBRepository.GetTemplateCategory(p.VCategory_ID), 
        val1 = p.val1, 
        val2 = p.val2, 
       }); 


      var jsonResult = Json(packageViewModels.ToDataSourceResult(request), JsonRequestBehavior.AllowGet); 
      jsonResult.MaxJsonLength = int.MaxValue; 
      return jsonResult; 
     } 
     catch (Exception ex) 
     { 
      Util.logger.Error(ex.Message); 
      return new JsonResult(); 
     } 
    } 

절대 처리 할 방법이 없습니다.

미리 감사드립니다.

+0

어디에서 오류가 발생합니까? 로컬에서 테스트 할 때 실패 할 때와 동일한 데이터 소스를 사용하고 있습니까? 오류 스택 추적을 게시 할 수 있습니까? – swestner

답변

1
ERROR 2016-09-12 16:09:28,695 890063ms Util     Package_Read    
At least one object must implement IComparable 
ERROR 2016-09-12 16:09:28,696 890064ms Util     Package_Read   - mscorlib 
ERROR 2016-09-12 16:09:28,697 890065ms Util     Package_Read    
at System.Collections.Comparer.Compare(Object a, Object b) 
at System.Collections.Generic.ObjectComparer`1.Compare(T x, T y) 
at System.Linq.EnumerableSorter`2.CompareKeys(Int32 index1, Int32 index2) 
at System.Linq.EnumerableSorter`2.CompareKeys(Int32 index1, Int32 index2) 
at System.Linq.EnumerableSorter`1.QuickSort(Int32[] map, Int32 left, Int32 right) 
at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count) 
at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__1.MoveNext() 
at System.Linq.Enumerable.<SkipIterator>d__30`1.MoveNext() 
at Kendo.Mvc.Extensions.QueryableExtensions.Execute[TModel,TResult](IQueryable source, Func`2 selector) 
at Kendo.Mvc.Extensions.QueryableExtensions.CreateDataSourceResult[TModel,TResult](IQueryable queryable, DataSourceRequest request, ModelStateDictionary modelState, Func`2 selector) 
at Kendo.Mvc.Extensions.QueryableExtensions.ToDataSourceResult(IQueryable queryable, DataSourceRequest request, ModelStateDictionary modelState) 
at Kendo.Mvc.Extensions.QueryableExtensions.ToDataSourceResult(IQueryable enumerable, DataSourceRequest request) 
at Kendo.Mvc.Extensions.QueryableExtensions.ToDataSourceResult(IEnumerable enumerable, DataSourceRequest request) 

오류가 해결 방법을 찾을 수

var jsonResult = Json(packageViewModels.ToDataSourceResult(request), JsonRequestBehavior.AllowGet); 

에 던져진보기에 검도 UI 그리드의 정렬을 변경했습니다. 아직도 다른 솔루션이 작동하는 이유를 이해하지 못합니다. 모든 것이 지금 일하고있는 것 같습니다.