有没有一种方法可以在关系的两端都有导航属性,而不会出现自引用错误

本文关键字:属性 导航 自引用 错误 一种 方法 关系 有没有 | 更新日期: 2023-09-27 18:20:14

我有两个表,MenuItemSearchTerm。我在SearchTerm上有一个外键,它链接到MenuItem的主键。

我使用数据库优先的方法和实体框架。

以上结果是生成的模型将包含对彼此的引用。这使我能够在一条语句中获得所需的所有数据

//Where() condition omitted for this example.
IList<MenuItem> menuItems = db.MenuItems.Include("SearchTerm").ToList();

这会带回我需要的数据。我遇到的问题是,当试图通过ajax调用返回这些数据时,我在响应中检测到一个错误自引用循环。我理解发生这种情况是因为它正在尝试序列化json,但无法这样做

有没有一种方法可以获取数据,使其只包括前两个级别(MenuItem、MenuItem.SearchTerms),或者这是我应该在ajax请求中设置的?

有没有一种方法可以在关系的两端都有导航属性,而不会出现自引用错误

至少有两个选项可以解决此问题。

  1. 控制json序列化并只序列化所需的级别数量MVC 4中正确的json序列化
  2. 禁用dbContext上的延迟加载关闭所有实体的延迟加载