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

C# 有没有一种方法可以在关系的两端都有导航属性,而不会出现自引用错误?,c#,ajax,json,entity-framework,C#,Ajax,Json,Entity Framework,我有两个表,MenuItem和SearchTerm。我在搜索项上有一个外键,它链接到菜单项上的主键 我在实体框架中使用数据库优先的方法 上述操作的结果是,生成的模型将包含对彼此的引用。这使我能够在一条语句中获得所需的所有数据 //Where() condition omitted for this example. IList<MenuItem> menuItems = db.MenuItems.Include("SearchTerm").ToList(); //本例中省略了Whe

我有两个表,MenuItemSearchTerm。我在搜索项上有一个外键,它链接到菜单项上的主键

我在实体框架中使用数据库优先的方法

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

//Where() condition omitted for this example.
IList<MenuItem> menuItems = db.MenuItems.Include("SearchTerm").ToList();
//本例中省略了Where()条件。
IList menuItems=db.menuItems.Include(“SearchTerm”).ToList();
这将带回我需要的数据。我遇到的问题是,当试图通过ajax调用返回此数据时,我在响应中检测到一个错误自引用循环。我理解这种情况的发生是因为它正在尝试序列化json,但无法做到这一点


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

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

  • 控制json序列化并仅序列化所需的级别
  • 禁用dbContext上的延迟加载

  • 我希望避免创建额外的视图模型。