我想從我的數據庫中公開一個服務列表,或者僅通過Web API和我的EF DBmodel
返回一個服務詳細信息。我使用VS2012 Web API腳手架,到目前爲止相當簡單,它的工作原理是,當我點擊網址(.../api/Services)
時,返回JSON
中的服務列表。問題是,當我只想獲得一個服務URL (.../api/Services/1)
時,我仍然可以獲得所有服務的完整列表,但是當我追蹤它時,它似乎只返回1個對象的計數。WEB API返回所有對象而不是一個
這裏發生了什麼?
以下是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;
}
Thnaks raina&Chris。我嘗試了你的建議,但即使我只選擇一條記錄,我仍然可以獲得完整列表。 –
Thnaks raina&Chris。我嘗試了你的建議,但即使我只選擇一條記錄,我仍然可以獲得完整列表。奇怪的是,當我一步一步地追蹤服務內容(返回服務;)時,我只返回一條記錄。但它會呈現我網頁中的所有Json記錄。當我做一個返回JsonResult的標準MVC操作時,我從來沒有遇到過這種情況。它必須與服務具有類別+國家+州外部鍵的事實相關,因爲如果我在它的表類別上使用相同的腳手架Web API控制器。 –
確定修正..與我最後的評論有點相關,這是因爲默認LazyLoading是一個副作用來達到整個對象圖。我使用this.Configuration.LazyLoadingEnabled = false在我的xxModel.Context.cs文件中關閉了它。現在它只是返回我想要的記錄。 –