![](/img/trans.png)
[英]How to add one-to-many relationship data to the database in ASP.NET Core?
[英]How to properly return nested one-to-many data in ASP.NET CORE MVC?
我有一個MinionLeaders
表,它與Minions
表具有一對多的關系。 一個仆從可以領導 n 個仆從,或者如果它沒有任何成員,它也可以領導自己。
問題是,當我嘗試以 json 形式獲取 Minion Leaders 的列表時,它返回一個雜亂無章的未完成的 json :
[
{
"LeaderID":"ABCD000000000001",
"Name":"Foo",
"Members":
[
{
"ID":"EEEE000000000001",
"Name":"Fubar",
"LeaderID":"ABCD000000000001"
此外,服務器拋出錯誤:
Newtonsoft.Json.JsonSerializationException: Self referencing loop detected for property 'minionLeader' with type 'rt5_app.Models.MinionLeaders'. Path '[0].Members[0]'.
如何正確返回數據?
這是我從數據庫MinionLeadersRepository.cs
獲取數據的MinionLeadersRepository.cs
:
public async Task<IEnumerable<MinionLeaders>> ListAsync()
{
return await context.MinionLeaders.Include(p => p.Members)
.ToListAsync();
}
ApiController.cs
:
public async Task<IEnumerable<MinionLeaders>> ListAsync()
{
return await _minionLeaders.ListAsync();
}
MinionLeadersModel.cs
public class MinionLeaders
{
[Key]
[MinLength(16)]
[MaxLength(16)]
public string LeaderID { get; set; }
[MinLength(16)]
[MaxLength(16)]
public string Name { get; set; }
public virtual List<Minion> Members { get; set; }
}
我發現這是一個序列化器問題。 我通過將序列化程序設置設置為忽略Startup.cs
循環引用來解決它
services.AddMvc()
.AddJsonOptions(x => x.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
但我不確定這是真正的解決方案還是只是一種解決方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.