错误:正在序列化实体框架类
本文关键字:实体 框架 序列化 错误 | 更新日期: 2023-09-27 18:07:36
public IList<Event> SearchEvents(DateTime fromDate, DateTime toDate, int categoryId, string eventName )
{
var query = context.Events.Include("City").Where(e => e.EventCategoryID == (categoryId <= 0 ? e.EventCategoryID : categoryId)
&& (e.StartDate.Value.Month >= fromDate.Month)
&& (e.EndDate.Value.Month <= toDate.Month)
&& ( e.StartDate.Value.Day>= fromDate.Day)
&& (e.EndDate.Value.Day <= toDate.Day )
&& (e.StartDate.Value.Year >= fromDate.Year)
&& (e.EndDate.Value.Year <= toDate.Year)
&& string.IsNullOrEmpty(eventName)? eventName.Contains(e.EventName): eventName.Contains(eventName));
return query.ToList();
}
public JsonResult SearchEvents(string from,string to,int categoryId, string eventName)
{
DateTime frmDate= Convert.ToDateTime(from);
DateTime toDate = Convert.ToDateTime(to);
var list = _eventRepository.SearchEvents(frmDate,toDate,categoryId,eventName);
return Json(list, JsonRequestBehavior.AllowGet);
}
出现如下错误:
Error :' A circular reference was detected while serializing an object of type 'CGWeb.Models.Repositories.Models.Event'.
如何在不删除虚拟关键字的情况下解决这个问题?请分享. . !
//
@Marc Gravell这是我的模型
[Table("Table_Events")]
public partial class Event
{
[Key]
public int ID { get; set; }
//public int? LocationId { get; set; }
//public int? ImageId { get; set; }
public string EventName { get; set; }
[NotMapped]
public string EventAddress { get; set; }
public string EventUrl { get; set; }
public string EventDesc { get; set; }
public Nullable<System.DateTime> StartDate { get; set; }
public Nullable<System.DateTime> EndDate { get; set; }
public Nullable<int> EventCategoryID { get; set; }
public int CityID { get; set; }
public int Viewed { get; set; }
[ForeignKey("EventCategoryID")]
public virtual EventCategory EventCategory { get; set; }
//[ForeignKey("ImageId")]
[NotMapped]
public virtual ImageViewModel Image { get; set; }
//[ForeignKey("LocationId")]
//public virtual Location Location { get; set; }
[ForeignKey("CityID")]
public virtual City City { get; set; }
[NotMapped]
public bool ISSponsorship { get; set; }
[NotMapped]
public Organizer Organizer { get; set; }
//[NotMapped]
[ForeignKey("EventId")]
public virtual IList<Attending> Attending { get; set; }
}
这与virtual
关键字无关;它与对象图有关。我们无法看到你的图表,但这里的经典场景是父/子双向关系,即父节点有.Children
,子节点有.Parent
。
树序列化器(如xml, json等)通常会遍历未显式标记为忽略的任何成员。因此,你会得到一个无限循环,因为它永远绕着这个圆转。选择:
- 在此边界处使用非循环DTO(这就是我要做的)
- 标记有问题的反向引用以排除(此机制因序列化器而异)