我有3个代码第一个表,“锦标赛”“日程”和“游戏”
class Tournament
public int Id { get; set; }
public string Name { get; set; }
//relationship to schedule
public ICollection<Schedule> Schedule { get; set; }
class Schedule
public int Id { get; set; }
public DateTime Date { get; set; }
//relation to game
public Game Game { get; set; }
public int GameId { get; set; }
class Game
public int Id { get; set; }
//relation to schedule
public ICollection<Schedule> Schedule { get; set; }
锦标赛有一对多的赛程,赛程有一场比赛,所有桌子全部连接。如上所述。
现在,我希望通过赛程和比赛获得所有锦标赛 所以,代码在
之下 var tournament = _context.Tournament
.Include(t => t.Schedule)
.ThenInclude(game => game.Game);
问题是,
我正在参加锦标赛,并在一场锦标赛中获得赛程信息和内线赛程信息。
但我也在游戏中获得日程安排。 但是,我没有指定在游戏的时间表内获取数据。
如何避免获取此冗余信息。 我的表格结构有问题吗?
退回的对象。
{
"id": 2,
"name": "Professional League 2018",
"schedule": [
{
"id": 2,
"date": "0001-01-01T00:00:00",
"gameId": 5,
"game": {
"id": 5,
"name": "League of Legend",
"schedule": [ //This information i want to removed.
{
"id": 4,
"date": "0001-01-01T00:00:00",
"gameId": 5,
答案 0 :(得分:0)
实体框架检测到记录属于多个路径,就像您的情况一样,即使它只从数据库中检索一次,所有路径都引用同一个内存中对象。
如果您不想退回该额外信息,则需要将其从序列化中排除:
class Tournament
public int Id { get; set; }
public string Name { get; set; }
//relationship to schedule
public ICollection<Schedule> Schedule { get; set; }
class Schedule
public int Id { get; set; }
public DateTime Date { get; set; }
//relation to game
public Game Game { get; set; }
public int GameId { get; set; }
class Game
public int Id { get; set; }
//relation to schedule
[JsonIgnore] //ignore when serializing with NewtonSoft.Json
public ICollection<Schedule> Schedule { get; set; }
但是,Tournament
有一个Schedule
的集合,这很奇怪。它不应该有一个Game
的集合,而这个集合又有Schedule
的集合吗?