我正在创建一个ASP.NET Core应用程序,并且已将我的数据库搭建到EFCore DbContext。
所有导航属性一对多都定义为public virtual ICollection<Type> NavProp { get; set; }
,并且脚手架在实体构造函数中添加一些初始化为NavProp = new HashSet<Type>()
。
我有一个数据控制器,它从DbContext返回数据:return this.DbContext.MyData.First();
如何避免Json序列化程序序列化我在查询中没有明确包含的导航属性?这样可以避免加载不需要的数据,也可以引用循环。
答案 0 :(得分:1)
如果您不想转移它们,则无需在查询中包含它们......
仅查询所需的列并将其存储在DTO(数据传输对象)中,如:
return this.DbContext.MyData.First().Select(x => new MyDataDto { Id = x.Id, Name = x.Name });
和DTO类一样:
public class MyDto {
// All the properties you want to tranfer
public int Id { get; set }
public string Name { get; set; }
// your props...
}
通过这种方法,您可以控制转移的内容。