2016-09-10 3 views
1

Ich weiß, es gibt mehrere andere Post über diese Ausnahme, aber keiner von ihnen hat mir geholfen.Mindestens ein Objekt muss IComparable implementieren - arbeiten auf lokaler Maschine, aber nicht auf Server

Jede der 3 Lösungen funktioniert auf meinem lokalen Computer, aber nicht in Live-System/Auf dem Server.

Als die Anzahl der PackageViewModels stieg, beendete die erste Lösung die Arbeit. - Implementierte zweite Lösung. Benutzer hinzugefügt zwei weitere Elemente und die zweite Lösung auch aufgegeben Arbeit - implementiert dritten, die nie auf Server gearbeitet. : D

EDIT: - Weitere Informationen ... Die Funktionen GetTemplateTypes(), GetTemplateCategories() und GetPackages() geben Listen von Modellen zurück, die über ADO.net Raw SQL von SQL Server 2008 abgefragt werden. Diese Funktionen sind immer die abgefragten Daten zurückgeben und theres nie irgendeine Art von Ausnahme werfen.

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(); 
     } 
    } 

Ich habe absolut keine Idee, wie damit umzugehen.

Vielen Dank im Voraus!

+0

Woher wird der Fehler geworfen? Wenn Sie lokal testen, verwenden Sie die gleiche Datenquelle wie wenn es fehlschlägt? Könnten Sie den Stack-Trace des Fehlers buchen? – swestner

Antwort

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) 

Fehler bei

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

eine Lösung änderte sich in der Ansicht der Sortierung der Kendo UI Grid gefunden geworfen wurde. Ich verstehe immer noch nicht, warum verschiedene Lösungen funktionieren. Scheint alles funktioniert jetzt zu finden.

Verwandte Themen