【发布时间】:2013-03-28 14:29:29
【问题描述】:
我正在使用 EF 5 和 ASP.NET Web API 从我的控制器返回 JSON。我的例子是宠物服务。对于这个问题,实体是 Client、Pet 和 Veterinarian。关系是:
客户 => 一对多 => 宠物 => 一对一 => 兽医
并且,颠倒层次结构:
兽医 => 一对多 => 宠物 => 一对一 => 客户
在我的PetsController 中,GetPets 操作如下所示:
var pets= db.Pets
.Where(p => p.IsActive == true)
.Include(p => p.Client)
.Include(p => p.Veterinarian);
return Mapper.Map<IEnumerable<Pet>, IEnumerable<PetDTO>>(pets); // Using Automapper to map to a DTO
生成的 JSON 包含 Pets,每个 Pet 一个客户,每个 Pet 一个兽医并且对于每个 Veterinarian,一个 Pets 集合。
我理解为什么宠物集合会显示在 JSON 中,但它与控制器操作中的宠物列表无关(至少现在不是)。我正在寻找一种优雅的方式来删除宠物的集合。现在我正在使用感觉像黑客的东西:
var pets= db.Pets
.Where(p => p.IsActive == true)
.Include(p => p.Client)
.Include(p => p.Veterinarian);
foreach (Pet pet in pets) {
pet.Veterinarian.Pets = null; // Remove the Pets collection before serializing
}
return Mapper.Map<IEnumerable<Pet>, IEnumerable<PetDTO>>(pets); // Using Automapper to map
我用序列化器和IQuerable 方法(其中很多我不熟悉)尝试了一些东西,但无济于事。
【问题讨论】:
标签: c# entity-framework asp.net-web-api json.net