[英]Web API Restful Service C# Perform SQL Query
使用網絡api靜態服務。
我有一張叫做測試的表。 主鍵是自動增量。 每行包含一個用戶名和一個測試問題。 該數據庫並未真正進行優化,但不必如此。
因為主鍵只是一個使每行保持唯一的整數,所以有許多行具有重復的用戶名。 這可以。
我希望能夠返回具有匹配用戶名的所有行。
我希望能夠通過URL的獲取請求來做到這一點:www.mywebsite.com/api/tests/{username}
Visual Studio中的默認控制器方法只能通過主鍵進行搜索,以返回一個唯一的結果。
這就像我想要的東西,但是不起作用。 500錯誤。 我也不擅長調試,因此請盡可能向我指出正確的方向,以便我提供更多信息。
// GET: api/Tests/robert
[ResponseType(typeof(Test))]
public async Task<IHttpActionResult> GetTest(string id)
{
//This is the default approach that just searches by primary key
//Test test = await db.Tests.FindAsync(id);
/*This is roughly what I want. Compiles, but doesn't work.*/
var query = "SELECT* WHERE id=" + id;
Test test = db.Tests.SqlQuery(query, id);
if (test == null)
{
return NotFound();
}
return Ok(test);
}
讓我知道我搞砸了。 我已經為此迷惑了好幾個小時了。 我沒有聲稱自己在這方面特別擅長。
嘗試像這樣聲明你的方法
[RoutePrefix("api")]
public class HisController : ApiController
{
[HttpGet]
public HttpResponseMessage Test(string name) {...}
}
另外,我建議您使用實體框架
[RoutePrefix("api")]
public class HisController : ApiController
{
[HttpGet]
public HttpResponseMessage Test(string name)
{
using (MyEntities bm = new MyEntities())
{
var usr = bm.Users.Where(u => u.Name == name ).ToList();
if (usr.Count() > 0)
return Request.CreateResponse(HttpStatusCode.OK, new
{
Success = true
,
Message = "Total users: " + usr.Count()
,
Data = usr
});
return Request.CreateResponse(HttpStatusCode.NotFound, new { Success = false, Message = "No users found..." });
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.