我有两个模型类 ServiceProvider.cs & Club.cs
,一个服务提供商可以在其中提供许多俱乐部。但是ServiceProvider.cs
中有俱乐部的虚拟集合。如下图所示
public class ServiceProvider
{
public int ServiceProviderId { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string PhoneNo { get; set; }
public virtual ICollection<Club> Clubs { get; set; }
}
public class Club
{
public int ClubId { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public virtual ServiceProvider serviceProvider { get; set; }
public int ServiceProviderId { get; set; }
}
我已经实现了存储库模式,以查询MS Sql服务器,如果我返回存储库的_serviceProvider
GetAll()
方法,则该方法运行良好,并且我获得了所有serviceprovider对象在PostMan
中。
public IEnumerable<ServiceProvider> Get()
{
return _serviceProvider.GetAll();
}
但是,如果我返回存储库的GetAllWithClubs()
方法,则会在此处出现运行时异常。 问题是:我无法让所有服务提供商以及他们的clubs集合一起获得。但是,我已经调试了代码,然后在这里提问,我使所有服务提供商以及他们的clubs集合都完美了。精细。我确信从数据库中获取数据是可以的,问题是从Get()Action方法发送回响应。
public IEnumerable<ServiceProvider> Get()
{
return _serviceProvider.GetAllWithClubs();
}
我在邮递员中遇到的错误是 Visual Studio中的输出是
我在.toList()
前面搜索了GetAllWithClubs()
的搜索解决方案,并返回了Asp.net core 2.1附带的ActionResult
(我的情况不支持) 2.0)。我相信这不是重复的问题。
GetAll()
和GetAllWithClubs()
方法的实现如下。
public IEnumerable<ServiceProvider> GetAllWithClubs()
{
return _context.ServiceProviders
.Include(c => c.Clubs);
}
在Repository.cs
public IEnumerable<T> GetAll()
{
return _context.Set<T>();
}
答案 0 :(得分:0)
问题:是 Json .net自引用循环检测,而解决方案是,我们必须忽略循环引用而不要序列化它们为了在Asp.net MVC 2.0中执行此操作,我们必须将此代码放入Startup.cs
中。
services.AddMvc().AddJsonOptions(
options => options.SerializerSettings.ReferenceLoopHandling =
Newtonsoft.Json.ReferenceLoopHandling.Ignore);
重建,问题解决了。