Кадр саморегуляции, обнаруженный в решении ASP.Net Core 1.1

Хотя я следовал за статью здесь я получаю сообщение об ошибке

self referencing loop обнаружен для свойства "..." с типом "...". Путь [4].... [0] '.

Я добавил это к моему Startup.cs:

services.AddMvc()
    .AddJsonOptions(opt => 
        opt.SerializerSettings.ReferenceLoopHandling = 
            ReferenceLoopHandling.Ignore
    );

Что еще может вызвать ошибку опорного контура?

EDIT: ответьте на вопрос в комментариях... Поврежденные классы:

public partial class GuidingSymptom
    {
        public GuidingSymptom()
        {
            VideosGuidingSymptoms = new HashSet<VideosGuidingSymptoms>();
        }
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        [MaxLength(70)]
        [Required]
        public string Name { get; set; }
        public string Description { get; set; }

        public int SeverityId { get; set; }
        public int? DiagnoseId { get; set; }

        [InverseProperty("GuidingSymptom")]
        public virtual ICollection<VideosGuidingSymptoms> VideosGuidingSymptoms { get; set; }
        [ForeignKey("DiagnoseId")]
        [InverseProperty("GuidingSymptom")]
        public virtual Diagnose Diagnose { get; set; }
        [ForeignKey("SeverityId")]
        [InverseProperty("GuidingSymptom")]
        public virtual GuidingSymptomSeverity Severity { get; set; }
    }

public partial class VideosGuidingSymptoms
{
    public int VideoId { get; set; }
    public int GuidingSymptomId { get; set; }

    [ForeignKey("GuidingSymptomId")]
    [InverseProperty("VideosGuidingSymptoms")]
    public virtual GuidingSymptom GuidingSymptom { get; set; }
    [ForeignKey("VideoId")]
    [InverseProperty("VideosGuidingSymptoms")]
    public virtual Video Video { get; set; }
}
+2
29 мая '17 в 20:02
источник поделиться
2 ответа

Я нашел решение, которое должно добавить

[JsonIgnore]

аннотация для затронутого имущества. Однако я ожидал, что это не будет необходимо при использовании ReferenceLoopHandling.Ignore

+3
30 мая '17 в 19:22
источник

Некоторые платформы сериализации не допускают таких циклов. Например, Json.NET сгенерирует следующее исключение, если возникнет цикл.

Newtonsoft.Json.JsonSerializationException: Self referencing loop detected for property 'Blog' with type 'MyApplication.Models.Blog'.

Если вы используете ASP.NET Core, вы можете настроить Json.NET на игнорирование циклов, которые он находит в графе объектов. Это делается с помощью метода ConfigureServices(...) в Startup.cs.

public void ConfigureServices(IServiceCollection services)
{
    ...

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

    ...
}

https://docs.microsoft.com/en-us/ef/core/querying/related-data

0
15 янв. '19 в 9:11
источник

Посмотрите другие вопросы по меткам или Задайте вопрос