![](/img/trans.png)
[英]Does 'Model' reads all the rows from the table when initialized? (performance)
[英]Select all rows from a model and have a nested json element as the Foreign key to another model with all rows selected
我希望控制器返回的JSON元素如下所示
{
"model": "Ford",
"make": "GT350R",
"dealerName": "Dallas Ford",
"location": {
"dealerName": "Dallas Ford",
"zip": 05700,
}
}
我似乎无法在我的控制器中正确获取查询。 我想从“汽车模型”中选择所有行和每个元素,以及在位置表中有外键的位置。 然后,我想将属于该location元素的所有行嵌入到sub元素中。 我认为我可能需要告诉我的模型有关外键的信息,但是因为我使用的是相同的属性名,所以我认为Entity Framework 6可以为我做到这一点。
这是我正在尝试的代码,它将仅从Cars中选择所有结果,而不会将位置显示为嵌套元素。
var query = (from results in db.Cars
join location in db.Locations on results.DealerName equals location.Dealername
select results);
return Ok(query.ToList());
这是它为每个元素显示的json
{
"model": "Ford",
"make": "GT350R",
"dealerName": "Dallas Ford",
}
这是我的模特
汽车模型
//......
[Key]
public string make { get; set; }
public string model { get; set; }
public Location Locations{ get; set; }//added this because someone in comments said to
public string dealerName { get; set; }
//........
位置模型
//......
[Key]
public string dealername{ get; set; }
public string Zip { get; set; }
//........
我认为代码看起来应该是这样,但我做的不正确。
var query = (from results in db.Cars
join location in db.Locations on results.DealerName equals location.Dealername
select new {
results = results;
results.location = location;
});
return Ok(query.ToList());
尝试这个
var query = (from results in db.Cars
join location in db.Locations on results.dealerName equals location.dealerName
select new {
model = results.model, make = results.make, dealerName = results.dealerName, location = location }
);
return json(query.ToList());
使您的生活更简单,并使用实体框架语法。 即使可以使用LINQ to SQL,使用起来也很冗长和麻烦。 所有你需要的是:
var query = db.Cars.Where(m => m.Locations.Any()).Include(m => m.Locations);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.