contient des cycles et ne peut pas être sérialisé si le suivi des références est désactivé, json.net et webapi
J'obtiens le message d'erreur:
Object graph for type 'System.Collections.Generic.List`1[[Proj.Model.Prom, Proj.Model,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' contains cycles and cannot be
serialized if reference tracking is disabled.
La lecture de ce sujet, qui semble être le sérialiseur, mais Json.Net prétend être la solution et je l'ai lu, WebApi et Framework 4.5 a par défaut. Ainsi en Est-il de venir par défaut? Si oui, Pourquoi je suis encore en train d'erreur?
Merci! Guillermo.
EDIT: Ajout de code
using System;
using System.Collections.Generic;
using System.Data.Spatial;
namespace Proj.Model
{
public class Prom
{
public Prom()
{
this.Stores = new List<Store>();
this.Branches = new List<Branch>();
this.Products = new List<Product>();
}
public int Id { get; set; }
public string Name { get; set; }
public DbGeography Location { get; set; }
public string Latitude { get; set; }
public string Longitude { get; set; }
public int StateId { get; set; }
public int CategoryId { get; set; }
public virtual ICollection<Store> Stores { get; set; }
public virtual ICollection<Branch> Branches { get; set; }
public virtual ICollection<Product> Products { get; set; }
public virtual Category Category { get; set; }
public virtual State State { get; set; }
}
}
using System;
using System.Collections.Generic;
namespace Proj.Model
{
public class Category
{
public Category()
{
this.Proms = new List<Prom>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<Prom> Proms { get; set; }
}
}
Puis en exécutant quelque chose comme ceci renvoie l'erreur
public IEnumerable<Category> GetList(int estadoId, string idTiposTarjetasList)
{
var ids = "1,2,3,4".Split(',');
var intIds = ids.Select(int.Parse);
var Categories = Uow.Categorias.GetAllIncluding(c => c.Proms).ToList();
foreach (var category in Categories)
{
var proms = category.Proms.Where(p => intIds.Contains(p.Id) && p.StateId == stateId).ToList();
category.Proms = proms;
}
return Categories
}
source d'informationauteur polonskyg
Vous devez vous connecter pour publier un commentaire.
Par défaut, WebApi définir la PreserveReferencesHandling' à Aucun.
Vous pouvez configurer l'Json.NET SerializerSettings dans WebApiConfig.cs:
La suite m'a aidé: