情境:
问题:
当我通过websocket发送模型时,静默失败(没有消息发送给客户端)。如果我设置为null导航属性,它可以正常工作:
_context.Posts.Add(model);
_context.SaveChanges();
model.User.Posts = null; // <- removing this line fails silently
_hub.Clients.All.SendAsync("AddAsync", model);
我如何诊断发生了什么?有人知道是什么原因?
<小时/>
User.cs
public Guid Id { get; set; }
// ...
public virtual List<Post> Posts { get; set; } = new List<Post>();
Post.cs
public Guid Id { get; set; }
// ...
public virtual User User { get; set; }
PostsController.cs
private IHubContext<PostsHub> _hub;
private DatabaseContext _context;
public PostsController(IHubContext<PostsHub> hub)
{
_hub = hub;
}
// ...
[HttpPost]
public async Task<ActionResult> PostAsync([FromBody] Post model)
{
// ...
_context.Posts.Add(model);
_context.SaveChanges();
model.User.Posts = null;
_hub.Clients.All.SendAsync("AddAsync", model);
// ...
}
答案 0 :(得分:1)
使用json转换,将模型序列化为json,并在发送之前再次将其反序列化为Post对象。 如果有错误,它应该在那里弹出,因为如果有依赖循环,那么json convert应该抛出异常