EFCore与来自脚手架数据库的NewtonSoft Json序列化:忽略未加载的导航属性

时间:2016-11-08 05:23:09

标签: c# json asp.net-mvc entity-framework asp.net-web-api

我正在创建一个ASP.NET Core应用程序,并且已将我的数据库搭建到EFCore DbContext。

所有导航属性一对多都定义为public virtual ICollection<Type> NavProp { get; set; },并且脚手架在实体构造函数中添加一些初始化为NavProp = new HashSet<Type>()

我有一个数据控制器,它从DbContext返回数据:return this.DbContext.MyData.First();

如何避免Json序列化程序序列化我在查询中没有明确包含的导航属性?这样可以避免加载不需要的数据,也可以引用循环。

1 个答案:

答案 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...
}

通过这种方法,您可以控制转移的内容。