Loop de auto-referência do Newtonsoft JsonSerializer usando o Entity Framework Core

Eu encontrei o erro:

JsonSerializationException: loop auto-referenciado detectado para a propriedade 'Subject' com o tipo 'Project.Models.Subject'. Caminho 'data [0] .Totals'.

Ocorre quando eu carrego uma View com um dataGrid preenchido por umIEnumerable<Subject> modelo. A grade é um DevExtreme DataGrid vinculado ao modelo do View da seguinte maneira:

@(Html.DevExtreme().DataGrid()
    .DataSource(Model)
    .Paging(paging =>
    {
        paging.Enabled(true);
        paging.PageIndex(0);
        paging.PageSize(20);
    })
    .Columns(columns =>
    {
        columns.Add().DataField("SubjectId");
        ... other fields
    })
)

Que é preenchido a partir de um Controller que extrai dados de um Repositório com esta função:

public async Task<IEnumerable<Subject>> GetSubjectsAsync()
        {
            return await _context.Subject.ToListAsync();
        }

A tabela Assunto tem um relacionamento 1: 1 com Totais com Totais com uma referência de chave estrangeira ao Assunto. Os modelos no projeto têm esta aparência (gerada a partir do Scaffold-DbContext):

public partial class Subject
    {
        public Guid SubjectId { get; set; }
        public virtual Totals Totals { get; set; }
    }

public partial class Totals
    {
        public Guid TotalsId { get; set; }
        public virtual Subject Subject { get; set; }
    }

Como os 2 objetos se referem um ao outro, ele causa um loop ao serializá-lo. Para corrigir isso, adicionei essa configuração ao meu método Startup.ConfigureServices:

services.AddMvc()
                .AddJsonOptions(x => x.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);

O que obtive desta resposta:https://stackoverflow.com/a/40501464/7897176

No entanto, isso não resolve o problema e ainda causa um erro ao carregar uma exibição que envolve Assuntos. Adicionando[JsonIgnore] para a propriedade Subject dos totais corrige o problema, mas não quero adicioná-lo a todas as propriedades filho nos meus modelos e refizê-lo sempre que atualizar meus modelos a partir do banco de dados.

questionAnswers(1)

yourAnswerToTheQuestion