我有3张表,你有所期望的正常关系,地区,区,位置。一个地方属于一个地区,一个地区属于一个地区。我把这3个表放到EF中,关系就在那里(Region表有一个属性到Districts表)。
鉴于关系已经存在,我正在寻找一个简单的查询,它将为每个表中的几个字段返回所有3个关系,所以我可以从我的web api返回:
[{
"region": "0",
"name": "Test"
[{
"district": "0"
"name": "Flower"
[{
"location": "0",
"name": "What"
}]
}]
},
{
...etc
}]
由于每个字段中都有很多字段,我是否必须在我自己的表中构建只有这些字段的关系,或者我只能从每个表中选择我想要的字段,同时保持与EF表的关系一个查询?理想情况下,我想在查询语法中执行此操作,因为我发现更自然。
答案 0 :(得分:1)
我建议您选择所需的字段。
像:
var results = dbContext.Regions.Select(r => new RegionModel{
Id = r.Id,
Name = r.Name
Districts = r.Districts.Select(d => new DistrictModel {
.......
})
});
我认为RegionModel和DistrictModel是一些数据传输对象,将用于上层抽象层(服务,控制器等)
您还可以使用AutoMapper使用QueryableExtensions将实体转换为DTO,这将根据您的配置自动为您选择。
<强> UPD:强>
您也可以使用LINQ查询语法:
var results = from r in dbContext.Regions select new RegionModel {
Id = r.Id,
Name = r.Name
Districts = from d in r.Districts select new DistrictModel {
...
}
});