EF使用包含的相关实体将实体序列化为json创建循环

时间:2019-05-24 12:02:28

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

我在WebApi项目中使用EF。我有一个包含许多彼此相关的表的数据库。当我序列化来自表的对象时,它会创建一个奇怪的json。

我的EF查询如下。

db.Products.Include(x => x.ProductCategoryRelations)
.Include(x => x.ProductCategoryRelations.Select(c => c.Category))
.Include(x => x.ProductFileRelations)
.Include(x => x.ProductFileRelations.Select(c => c.File))
.Include(x => x.ProductPropertyRelations)
.Include(x => x.ProductPropertyRelations.Select(c => c.Property))
.Include(x => x.ProductColorRelations)
.Include(x => x.ProductColorRelations.Select(c => c.Color))
.Include(x => x.Brand)
.Where(predicate)
.ToListAsync();

由于此EF查询。它会创建如下所示的json,这是不可接受的...

1.Product
    2.Brand
        3.Product
            4.ProductCategoryRelations
                5.Product
                    .....
                    .....
                    .....
                    .....

我该如何解决?我想拥有一系列产品,但我不是需要改变以获得这种结果的人。任何帮助将不胜感激。

预先感谢

1 个答案:

答案 0 :(得分:1)

尝试此方法:

db.Products
.Where(predicate)
.Select(p=> new { p.Brand, p.ProductColor.Color_Name, p.ProductCategory.Category_Name })
.ToListAsync();