我想从我的数据库中公开服务列表,或者只使用我的EF DBmodel
通过Web API返回一个服务详细信息。我使用VS2012 Web API脚手架,到目前为止非常简单,当我点击URL JSON
时,它可以在(.../api/Services)
中返回服务列表。问题是,当我想获得一个服务URL (.../api/Services/1)
时,我仍然获得所有服务的完整列表,尽管当我跟踪它时似乎只返回1个对象的计数。
这里发生了什么?
以下是2个控制器操作。
ps:我还尝试使用.Where()
代替.Find()
,但结果在两种情况下都相同。
// GET api/Services
public IEnumerable<service> Getservices()
{
var services = db.services.Include(s => s.Category).Include(s => s.Country).Include(s => s.StateProvince).Include(s => s.Territory);
return services.AsEnumerable();
}
// GET api/Services/5
public service Getservice(int id)
{
service service = db.services.Find(id);
if (service == null)
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
}
return service;
}
答案 0 :(得分:0)
尝试将其处理为:var service = db.services.Single(s => s.Id == id)
答案 1 :(得分:0)
首先,检查您的数据库是否有一个查询项目。
如果您通过主键查询,那么
db.services.SingleOrDefault(s => s.Id == id)
应该这样做。
如果您在某个字段上查询可能会返回多个结果,则需要处理异常。
您使用的过滤变体(Single, SingleOrDefault, First, FirstOrDefault
)将取决于代码的确切语义。