我原来问过这个问题:
已经回答了 How Do I Resolve “A specified Include path is not valid”?,而我的.Include()现在正在工作,但是,当序列化程序试图使它变得神奇时,我收到以下错误:
已经回答了 How Do I Resolve “A specified Include path is not valid”?,而我的.Include()现在正在工作,但是,当序列化程序试图使它变得神奇时,我收到以下错误:
You must write an attribute 'type'='object' after writing the attribute with local name '__type'.
这是我正在做的返回数据:
var everything = dc.Categories .Include(c => c.Products);
我的类定义相当简单:
public class Category { public int CategoryId { get; set; } public string Title { get; set; } public virtual ICollection<Product> Products { get; set; } } public class Product { public int ProductId { get; set; } public string Title { get; set; } public virtual Category Category { get; set; } } public class ProductDataContext : DbContext { public DbSet<Category> Categories { get; set; } public DbSet<Product> Products { get; set; } }
我也尝试删除’虚拟’,但后来我得到循环引用.我尝试将ICollection产品上的setter设置为私有(如此处建议:http://forums.asp.net/t/1773164.aspx/1),这样可以清除错误,但之后我的产品不是返回的JSON的一部分.
我需要做些什么来使数据与类别及其产品序列化?
编辑
这是我得到的堆栈跟踪:
[SerializationException: Object graph for type 'System.Collections.Generic.List`1[[Test.Models.Product,Test.Models,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null]]' contains cycles and cannot be serialized if reference tracking is disabled.] System.Web.Http.WebHost.HttpControllerHandler.EndProcessRequest(IAsyncResult result) +30206 System.Web.Http.WebHost.HttpControllerHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +10 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9478661 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously) +178
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。