[英]Entity to json error - A circular reference was detected while serializing an object of type
尝试将实体对象转换为 JSON 字符串时发生以下错误。 我将 C# MVC4 与代码优先数据库设计一起使用。 它接缝是因为 FK 和表之间的关系造成了这个问题。 解决方法是什么?
序列化 System.Data.Entity.DynamicProxies.User 类型的对象时检测到循环引用
我的代码是
User ma = db.user.First(x => x.u_id == id);
return Json(ma, JsonRequestBehavior.AllowGet);
这是因为它正在尝试加载子对象,并且它可能会创建一些永远不会结束的循环(a=>b, b=>c, c=>d, d=>a)
您只能在特定时刻将其关闭,如下所示。因此,除非在您的对象上调用 Include 方法,否则 dbcontext 不会加载客户子对象
db.Configuration.ProxyCreationEnabled = false;
User ma = db.user.First(x => x.u_id == id);
return Json(ma, JsonRequestBehavior.AllowGet);
我的问题是通过使用这个解决的:
//initialize model db
testdbEntities dc = new testdbEntities();
//get employee details
List<Employee1> lst = dc.Employee1.ToList();
//selecting the desired columns
var subCategoryToReturn = lst.Select(S => new {
Employee_Id = S.Employee_Id,
First_Name = S.First_Name,
Last_Name = S.Last_Name,
Manager_Id = S.Manager_Id
});
//returning JSON
return this.Json(subCategoryToReturn , JsonRequestBehavior.AllowGet);
我遇到了同样的问题,我所做的是只通过了需要的列来查看,就我而言。 只有 2。
List<SubCategory> lstSubCategory = GetSubCateroy() // list from repo
var subCategoryToReturn = lstSubCategory.Select(S => new { Id = S.Id, Name = S.Name });
return this.Json(subCategoryToReturn , JsonRequestBehavior.AllowGet);
为什么不创建一个类来保存查询内容? 那对我有用
它正在尝试加载子对象,并且它可能会创建一些永远不会结束的循环循环属性。
你也使用 [ScriptIgnore] ,不会序列化公共属性或公共字段,看看这个:
public class BookingHotel : IntBaseEntity
{
public string BookingName { get; set; }
public string BookingReference { get; set; }
public DateTime? CheckInDate { get; set; }
public DateTime? CheckOutDate { get; set; }
public int HotelId { get; set; }
[ScriptIgnore]
public Hotel Hotel { get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.