gpt4 book ai didi

ef-code-first - 在 WebAPI Controller 中序列化 EF Code First 5.0 数据时出错

转载 作者:行者123 更新时间:2023-12-04 10:28:00 24 4
gpt4 key购买 nike

我最初问过这个问题:
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 Products 上的 setter 设为私有(private)(如此处建议: http://forums.asp.net/t/1773164.aspx/1 ),这可以清除错误,但我的产品不是返回的 JSON 的一部分。

我需要做什么才能使数据与其中的类别及其产品序列化?

编辑
这是我得到的堆栈跟踪:
[SerializationException: Object graph for type &#39;System.Collections.Generic.List`1[[Test.Models.Product, Test.Models, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]&#39; 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&amp; completedSynchronously) +178

最佳答案

为了解决这个问题,我需要:

  • 禁用延迟加载和
  • 使用 IgnoreDataMember来自 System.Runtime.Serialization作为 Category 的属性导航属性(Product 类的反向引用)。

  • 希望这可以帮助某人。

    为了解决 XML-ish 错误,我使用了这里的帮助:
    http://www.strathweb.com/2012/03/serializing-entity-framework-objects-to-json-in-asp-net-web-api/

    为了解决循环引用的问题,我以此为指导:
    MVC 4, Upshot entities cyclic references

    关于ef-code-first - 在 WebAPI Controller 中序列化 EF Code First 5.0 数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10038628/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com