0

我已经建立了一个非常简单的数据库模式

**Tickets**:
TicketId (PK)
AreaId (FK)
SeverityId (FK)
AssigneeId (FK)

**Areas**:
AreaId(PK)
AreaName

**Severities**:
SeverityId(PK)
SeverityName

**Assignees**:
AssigneeId(PK)
AssigneeName

我创建实体模型,并在 TicketController 中尝试检索并 Json 的门票表中的数据。

[HttpPost]
public ActionResult Index([DataSourceRequest]DataSourceRequest result)
{
var tickets = db.Tickets.Include(t=> t.Areas).Include(t=> t.Assignees).Include(t=> t.Severities)

DataSourceResult result = tickets.ToDataSourceResult(request);

Return Json(result);
}

出于某种原因,当我将结果 Json 以将其传递给视图中的 KendoUiGrid 时,我无法理解,我得到“循环引用错误”。我在我的表/实体关系中看不到循环引用!!

在剑道文档中,我读到了这个

如果您决定直接使用 Kendo UI JavaScript 库,返回 JSON 很简单。您只需要定义一个控制器方法并在返回结果上调用 this.Json。如果 .NET 可以序列化您的响应,这就是它的全部。

以上所有是否意味着实际上我不能使用来自具有主/外键的健全数据库模式的 Json 实体?

提前感谢

4

2 回答 2

1

尝试禁用延迟加载。可能是它试图将数据库中的所有内容序列化为 JSON。

于 2013-01-04T08:25:25.193 回答
1

创建一个平面模型类并将模型传递给 Json 和 Grid。您将不得不比您在此处尝试执行的操作更多地手动填充模型,但是拥有模型还有其他好处,您稍后会发现。循环引用是因为 EF 类的导航属性。在 MVC 中,模型并不意味着数据模型类,而是您创建的新类。做得好,新模型应该完成大部分工作,验证,翻译等。控制器只是传递东西,视图只是渲染。希望这可以帮助!

于 2013-01-06T22:19:25.423 回答