pol*_*kyg 12 c# entity-framework ef-code-first asp.net-web-api entity-framework-5
我收到错误:
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.
Run Code Online (Sandbox Code Playgroud)
读到这一点,似乎是序列化器,但Json.Net声称是解决方案,我读过WebApi,而Framework 4.5默认使用它.所以它是默认出现的吗?如果是这样,为什么我仍然会收到该错误?
谢谢!吉列尔莫.
编辑:添加代码
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; }
}
}
Run Code Online (Sandbox Code Playgroud)
然后运行这样的东西会返回错误
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
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,WebApi将"PreserveReferencesHandling"设置为"无".
您可以在WebApiConfig.cs中配置Json.NET SerializerSettings:
config.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling =
Newtonsoft.Json.PreserveReferencesHandling.All;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17709 次 |
| 最近记录: |