asp net core system.stackoverflowexception вложенный самоссылаемый класс в viewmodel - PullRequest
0 голосов
/ 05 февраля 2019

Я занимаюсь разработкой системы блогов с использованием основного кода asp.net, сначала используя ef core.

У меня есть класс категории, на который ссылаются сами, как показано ниже, и у меня также есть класс поста, который имеетотношение один ко многим с этим классом категории, как и во многих других системах блогов.

, когда я использую свой класс записей в качестве параметра действия контроллера для создания привязок записей, работает нормально, но когда я помещаю его в ViewModel, я получаюsystem.stackoverflowexception.

ps: эта ошибка произошла, когда я мигрировал с ядра asp.net 2.1 на 2.2.

, пока я пытался использовать

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

, но этоне решил проблему

это моя категория и классы сообщений

     public class Category : BaseEntity
    {


        public string Name { get; set; }

        public string PersianName { get; set; }

        public string Description { get; set; }

        [Display(Name = "عکس")]
        public string ImagePath { get; set; }

        public virtual ICollection<Post> Posts { get; set; }

        public int? ParentId { get; set; }

        private Category _parent;

        [ForeignKey("ParentId")]
        public virtual Category Parent { get => _parent; set => _parent = value; }

        public virtual ICollection<Category> Children { get; set; }
      }

 public class Post:BaseEntity
    {
        public Post()
        {
            PostTags = new List<PostTag>();
            Comments = new List<Comment>();
        }

        public string Title { get; set; }

        public string Slug { get; set; }

        public string Abstract { get; set; }

        public string Content { get; set; }

        public string ImagePath { get; set; }

        public IFormFile Image { get; set; }

        [DataType(DataType.Date)]
        public DateTime PubDate { get; set; } = DateTime.UtcNow;

        [DataType(DataType.Date)]
        public DateTime LastModified { get; set; } = DateTime.UtcNow;

        public bool IsPublished { get; set; } = false;

        public int CategoryId { get; set; }

        public Category Category { get; set; }

        public ICollection<PostTag> PostTags { get; set; }

        public ICollection<Comment> Comments { get; set; }
    }


...