我有一个API端点,它返回一个循环错误(因为它链接了一个连接类的循环),所以例如
class A
{
virtual ClassAB;
}
class B
{
virtual ClassAB;
}
class AB
{
virtual ClassA;
virtual ClassB;
}
在API GET中,我需要从ClassA的角度返回ClassB的细节(在ClassB GET中反之亦然)。
当我得到时,我做以下操作:
IQueryable<ClassA> results = _dbset
.Include(x => x.ClassAB)
.Include(x => x.ClassAB.Select(y => y.ClassB))
.AsExpandable()
.Where(predicate)
.OrderBy(x => x.ID);
得到self refloops错误。现在在我的DB上下文中,我有:
Configuration.ProxyCreationEnabled = false;
Configuration.LazyLoadingEnabled = false;
在我的Global.asax
protected void Application_Start()
中,我有:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
然而,我仍然得到错误;有什么办法解决这个问题吗?
尝试添加
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.None;