c# - 在序列化 'SubSonic.Schema .DatabaseColumn' 类型的对象时检测到循环引用。

标签 c# .net json entity-framework subsonic

我正在尝试做一个简单的 JSON 返回,但我遇到了以下问题。

public JsonResult GetEventData()
{
    var data = Event.Find(x => x.ID != 0);
    return Json(data);
}

我得到了一个 HTTP 500 异常,如本问题的标题所示。我也试过了

var data = Event.All().ToList()

同样的问题。

这是一个错误还是我的实现?

最佳答案

您的对象层次结构中似乎存在 JSON 序列化程序不支持的循环引用。你需要所有的列吗?您可以只在 View 中选择您需要的属性:

return Json(new 
{  
    PropertyINeed1 = data.PropertyINeed1,
    PropertyINeed2 = data.PropertyINeed2
});

这将使您的 JSON 对象更轻巧且更易于理解。如果您有很多特性,AutoMapper可用于 automatically DTO 对象和 View 对象之间的映射。

关于c# - 在序列化 'SubSonic.Schema .DatabaseColumn' 类型的对象时检测到循环引用。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1153385/

相关文章:

c# - 在数组中查找升序重复对

c# - 是否可以从空变量开始联合?

javascript - 如何从由DiagramBuilder.toJSON()返回的JSON创建AlloyUIDiagramBuilder?

iphone - Http 发布请求

c# - 推荐哪个: "static public" or "public static"

c# - 连接无向图中某些节点的最短路径

c# - Powerpoint 无法打开文件

C# 修改 parallel.foreach 中的 DataRow 数组引用,为什么代码运行正确?

c# - 如何为我的 ASP.NET TextBox 获取正确的 ClientID?

javascript - Google JSON 样式 API 响应