【发布时间】:2021-08-30 14:44:03
【问题描述】:
我正在开发一个 .Net 博客样式 API 作为练习项目,但遇到了这个错误。我有一个用户类、帖子类和评论类。 Comment 引用 Post 和 User,每个都是一对多的。
这是我的用户类:
public class User
{
//Other properties..
public List<Post> Posts { get; set; }
public List<Comment> Comments { get; set; }
}
我的帖子类:
public class Post
{
//Other properties..
public List<Comment> Comments { get; set; }
[Required]
public User CreatedBy { get; set; }
}
和我的评论类:
public class Comment
{
//Other properties..
[Required]
public User CreatedBy { get; set; }
[Required]
public Post Post { get; set; }
}
我正在尝试保存这样的评论(我有从以前的方法填充的 Post.Id 和 CreatedBy.Id)。这就像它按预期插入数据库一样工作,但是我得到了 JsonException。
comment.Post = await _context.Posts.SingleOrDefaultAsync(p => p.Id == comment.Post.Id);
comment.CreatedBy = await _context.Users.FindAsync(comment.CreatedBy.Id);
await _context.Comments.AddAsync(comment);
await _context.SaveChangesAsync();
return comment;
我可以通过添加 Microsoft.AspNetCore.Mvc.NewtonsoftJson 并将其添加到我的启动类来解决此问题
services.AddControllers()
.AddNewtonsoftJson(options =>
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
但我想知道我是否应该在我的代码中做些什么来避免这种情况,而不是仅仅提供一个选项说没关系。
【问题讨论】:
标签: c# .net entity-framework-core