c# - 无法将具有关系的对象作为 ObjectResult 返回
问题描述
我有像这样的简单控制器(第一个代码)并且它运行良好,但是当我添加 .Include 以包含与其他表的关系时,它会立即停止返回正确的 ObjectResult (尽管填充了数据)。
邮递员返回:
无法得到任何响应连接到http://localhost:51111/data/test时出错。为什么会发生这种情况:服务器无法发送响应:确保后端正常工作自签名 SSL 证书被阻止:通过在设置 > 常规代理配置不正确中关闭“SSL 证书验证”来修复此问题确保代理在设置>代理请求超时中正确配置:在设置>常规中更改请求超时
没有发生异常,也没有字段为空。
public IActionResult test()
{
var user = _context.UsersTable
.SingleOrDefault(p => p.Id.ToString().Length > 0);
return new ObjectResult(user);
}
public IActionResult test()
{
var user = _context.UsersTable
.Include(x => x.Items)
.SingleOrDefault(p => p.Id.ToString().Length > 0);
return new ObjectResult(user); // data IS in the user, even relational collection is filled with data, but it just does not return.
}
public class User
{
[Key]
public Guid Id { get; set; }
public virtual ICollection<Item> Items { get; set; } = new HashSet<Items>();
protected User()
{
}
public User(string login, string password)
{
(...)
}
}
public class Item
{
[Key]
public Guid Id { get; set; }
public string ItemName { get; set; }
// Relation to User
public Guid UserId { get; set; }
public virtual User User { get; set; }
protected Item()
{ }
public Item(string name, User user)
{
Id = Guid.NewGuid();
UserId = user.Id;
ItemName = name;
}
}
public class AppContext : DbContext
{
public AppContext(DbContextOptions<AppContext> options) : base(options)
{
Database.SetCommandTimeout(20000);
}
public DbSet<User> UsersTable { get; set; }
public DbSet<Item> ItemsTable{ get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
}
到目前为止,我尝试过:
user.Items = user.Items.ToList();
解决方案
解决方案:https ://stackoverflow.com/a/48608081/10074551
var options = new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
};
return Json(documents, options);
推荐阅读
- linux - 通过取变量值循环
- arrays - 如何在bash中从csv转换为数组
- elasticsearch - Kibana,匿名访问,仅限仪表板
- laravel - laravel 在功能上获得价值请求?
- vba - 使用 excel VBA 在 powerpoint 中更改页眉/页脚日期和时间的格式
- css - 整个网络客户端背景
- p2p - Bittorrent 在多个对等点之间维护状态
- python - 根据字段的唯一值在 PySpark 数据帧中生成 UUID
- bash - 在 Mac OSX 中相当于 cut -c ... --output-delimeter=','?
- python - 如何在 Python 中使用 Pandas 有效地将数据框重组为日期时间条目?