Tôi đã hỏi câu hỏi này: How Do I Resolve "A specified Include path is not valid"? đã được trả lời, và .Include() của tôi hiện đang hoạt động, khi serializer cố gắng làm việc đó, tôi nhận được các lỗi sau:Lỗi khi tuần tự hóa Mã EF Dữ liệu đầu tiên 5.0 trong Bộ điều khiển WebAPI
You must write an attribute 'type'='object' after writing the attribute
with local name '__type'.
đây là những gì tôi đang làm để trả lại dữ liệu:
var everything = dc.Categories
.Include(c => c.Products);
định nghĩa lớp của tôi là khá đơn giản:
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; }
}
Tôi cũng đã thử xóa 'ảo' nhưng sau đó tôi nhận được tham chiếu vòng tròn. Tôi đã cố gắng làm cho setter trên sản phẩm ICollection tư nhân (như đề nghị ở đây: http://forums.asp.net/t/1773164.aspx/1), mà được lỗi để xóa, nhưng sau đó sản phẩm của tôi không phải là một phần của JSON trả về.
Tôi cần làm gì để lấy dữ liệu theo thứ tự các danh mục và sản phẩm của chúng trong?
EDIT Dưới đây là stack trace tôi đã nhận được:
[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
stack trace là gì ? – SLaks
Tôi đã thêm dấu vết ngăn xếp cũng như giải pháp bên dưới, được đào lên từ một vài bài đăng khác và được ghép lại với nhau. – MisterJames
... và cảm ơn bạn đã giúp đỡ @SLaks. – MisterJames