enthält Zyklen und kann nicht serialisiert werden, wenn Referenz-Verfolgung deaktiviert ist, json.net und webapi

Ich bin immer der Fehler:

 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.

Darüber zu Lesen, scheint zu sein, serializer, aber Json.Net behauptet die Lösung zu sein und ich habe gelesen, WebApi und Framework 4.5 hat es standardmäßig. So kommt es standardmäßig? Wenn dem so ist, Warum ich bin immer noch der Fehler?

Dank! Guillermo.

BEARBEITEN: Hinzufügen von 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; }
    }
}

Dann läuft so etwas wie dieses gibt den Fehler zurück

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
}
tun Sie das gleiche problem sehen, wenn Sie Proxys deaktivieren? (msdn.microsoft.com/en-us/library/...)

InformationsquelleAutor polonskyg | 2012-11-20

Schreibe einen Kommentar