Я занимаюсь разработкой системы блогов с использованием основного кода 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; }
}