错误:正在序列化实体框架类

本文关键字:实体 框架 序列化 错误 | 更新日期: 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(这就是我要做的)
  • 标记有问题的反向引用以排除(此机制因序列化器而异)