1

我想,我已经阅读了有关此错误的所有内容,并且尝试了所有内容。这是我的模型:

主要的:

public class Trip
{
    public int TripId { get; set; }
    public string Name { get; set; }
    public string ShortDescription { get; set; }
    public string Country { get; set; }
    public float BasicPrice { get; set; }
    public virtual ICollection<ApartmentType> ApartmentType { get; set; }
    public virtual ICollection<TransportMethod> TransportMethod { get; set; }
    public virtual ICollection<FeedingType> FeedingType { get; set; }
}

公寓类型:

public class TransportMethod
{
    public int TransportMethodId { get; set; }
    public int TripId { get; set; }
    public string Name { get; set; }
    public float Price { get; set; }
}

喂食类型:

public class FeedingType
{
    public int FeedingTypeId { get; set; }
    public int TripId { get; set; }
    public string Description { get; set; }
    public float Price { get; set; }
}

运输类型:

public class TransportMethod
{
    public int TransportMethodId { get; set; }
    public int TripId { get; set; }
    public string Name { get; set; }
    public float Price { get; set; }
}

序列化 Trip 实体时,出现循环依赖错误。我尝试过的事情:

  1. 在 DbContext 中禁用延迟加载。
  2. 添加 json.SerializerSettings.PreserveReferencesHandling=Newtonsoft.Json.PreserveReferencesHandling.All; 到 GLOBAL.asax

  3. 在每个子实体中将装饰器 [IgnoreDataMember] 添加到 TripId。

  4. 将此实体映射到不包含 ICollection 成员的 ViewModel。- 这行得通,但在某些时候我会想要将这些列表提供给客户。

我真的不知道发生了什么事。我错过了什么?我真的无法发现任何循环依赖。

4

1 回答 1

1

您是否尝试将[JsonIgnore]属性添加到TripId子实体?

http://james.newtonking.com/projects/json/help/html/T_Newtonsoft_Json_JsonIgnoreAttribute.htm

或设置

json.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

于 2012-12-06T21:27:18.683 回答