【发布时间】:2017-05-05 11:19:00
【问题描述】:
这是我用来在“工单”控制器中处理 GET 请求的代码:
// GET: api/WorksOrders/5
/// <summary>
/// Fetches the Works Order with corresponding ID (pkOrderItemID)
/// </summary>
[Authorize]
public OrderItem Get(int id)
{
using (var entities = new customappsEntities())
{
return entities.OrderItems.FirstOrDefault(e => e.pkOrderItemID == id);
}
}
运行时,我在 JSON 响应中收到以下错误消息:
"Error getting value from 'OrderItemDepartments' on 'System.Data.Entity.DynamicProxies.OrderItem_501562E50E13B847D4A87F7F2DEC7C8CEDAF127355CB4FC30E12653275CE6412'.",
我可以通过添加来解决这个问题
entities.Configuration.ProxyCreationEnabled = false;
这会返回整个表格,但底部有一组空数组,例如 JSON 格式的响应如下所示:
{
"$id": "1",
"pkOrderItemID": 271,
"StartedOn": "2015-01-01T00:00:00",
"CompletedOn": "2014-10-15T00:00:00",
"Costs": [],
"Dispatches": []
}
数组似乎是数据库中的外键关系,我相信它们返回空,因为它卡在自引用循环中(我能够收到该错误消息几次,但我无法从那以后重新创建它)。我试过添加
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
发件人:Self referencing loop detected - Getting back data from WebApi to the browser
以及来自相同或相似线程的许多其他解决方案,但它并没有解决问题。我所有的数据类都是由 Entity Framework 自动生成的,所以我无法修改它们,也许这是设置 Web API 的错误方式?
任何帮助找出数组返回空的原因将不胜感激。 谢谢你。
更新
这是展示fk关系的DataModel Diagram的截图
【问题讨论】:
标签: c# asp.net arrays json entity-framework