【问题标题】:Grid.Mvc + Entity Framework exceptionGrid.Mvc + 实体框架异常
【发布时间】:2016-09-06 05:39:20
【问题描述】:

在 Grid.Mvc 方面需要帮助。我正在传递 Entity Framework 生成的 IQueryable 集合并获得异常

动作方法:

public ActionResult Index(int id)
{
        IQueryable<Document> documents = _dbContext.Document;

        var model = new DocumentListViewModel()
        {                Documents = documents
        };

        return View(model);
}

DocumentListViewModel:

public class DocumentListViewModel
{
    public IQueryable<Document> Documents { get; set; }
}

查看:

@model CompanyName.DocFlow.Web2.Models.DocumentListViewModel
@using GridMvc.Html;

@Html.Grid(Model.Documents).Columns(columns =>
                {
                    columns.Add(x => x.CreatedDate).Titled("Дата");//.Filterable(true);
                    columns.Add(x => x.IncomingNumber).Titled("Входящий номер");//.Filterable(true);
                    columns.Add(x => x.Description).Titled("Краткое описание");
                }).WithPaging(10)

例外:

EntityFramework.SqlServer.dll 中出现“System.NotSupportedException”类型的异常,但未在用户代码中处理

附加信息:“Skip”方法仅支持 LINQ to Entities 中的排序输入。必须在方法“Skip”之前调用方法“OrderBy”。

文档说明:

如果您的数据源是数据库(例如),您需要将 IQueryable 集合传递给网格。 Grid.Mvc 使用 IQueryable 接口为您的数据集合构造查询表达式。

当您转到某个页面时,网格会调用 .Skip(N).Take(N) 方法,当您对数据进行排序时,网格会调用 OrderBy 或 OrderByDescending 方法等。

教程链接:Grid.Mvc

【问题讨论】:

  • 当您转到某个页面时,网格会调用 .Skip(N).Take(N) 方法,当您对数据进行排序时,网格会调用 OrderBy 或 OrderByDescending 方法等你明白了吗?它只是说你必须使用OrderByOrderByDescending
  • 网格渲染时出现异常
  • 您是否在代码中的任何地方使用了OrderByOrderByDescending
  • @Div 谢谢你的帮助。我在我的操作方法中添加了 OrderBy:_dbContext.Document.OrderBy(x=&gt;x.Id); 并且它有效
  • 是的,就是这样,你已经在你的问题中提到了解决方案:)

标签: c# asp.net-mvc grid.mvc


【解决方案1】:

MVC 网格描述:

当您转到某个页面时,网格会调用 .Skip(N).Take(N) 方法和 当您对数据进行排序时,网格会调用 OrderBy 或 OrderByDescending 方法等

排序过程可以封装字段get方法,也可以在ActionResult方法中进行同样的操作

示例代码:

public class DocumentListViewModel
{
    private IQueryable<Document> _Documents;
    public  IQueryable<Document> Documents 
   { 
     get 
     { 
        return _Documents.Ordery(x=>x.Id);
     } 
     set 
     { 
        _Documnets = value;
     } 
   }
}

public ActionResult Index(int id)
{
        IQueryable<Document> documents = _dbContext.Document.OrderBy(x=>x.Id);

        var model = new DocumentListViewModel()
        {             
            Documents = documents
        };

        return View(model);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    相关资源
    最近更新 更多