この例外に関するいくつかの他の投稿がありますが、どれも私を助けてくれないことは知っています。少なくとも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();
}
}
私は絶対にこれを処理する方法はありません。
ありがとうございます!
どこからエラーが投げられるのですか?ローカルでテストするときに、失敗したときと同じデータソースを使用していますか?エラーのスタックトレースを投稿できますか? – swestner