2016-09-10 168 views
1

この例外に関するいくつかの他の投稿がありますが、どれも私を助けてくれないことは知っています。少なくとも1つのオブジェクトがIComparableを実装する必要があります - ローカルマシンではなくサーバ上で動作する

3つのソリューションのそれぞれがローカルマシンで動作していますが、Live-System/Serverでは動作しません。

PackageViewModelsの数が増えるにつれて、First Solutionは機能しなくなりました。 - 第2のソリューションを実装しました。ユーザーはさらに2つのアイテムを追加し、2番目のソリューションも終了しました。サーバーでは一度も動作しませんでした。 :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グリッドのソートを変更しました。さまざまなソリューションがなぜ機能していたのかまだ分かりません。すべてが今働いているようだ。

関連する問題