我是ASP.NET的新手,所以这可能是一个非常基本的问题。无论如何,我想在服务器上执行存储过程。如标题中所述,我正在使用ASP.NET MVC。当前可以查询整个表:
控制器:
public JsonResult GetLaptopsJson()
{
Laptop[] laptops = context.GetTable<Laptop>().ToArray();
return Json(laptops, JsonRequestBehavior.AllowGet);
}
Javascript:
$.ajax({
url: '/Home/GetLaptopsJson',
contentType: 'application/html; charset=utf-8',
type: 'GET',
dataType: 'json'
})
.success(function (result) {
$('#search_result').empty();
for (var i = 0; i <= (result.length - 1); i++)
{
add_result(result[i].Id, result[i].Price);
}
})
.error(function (xhr, status) {
alert(status);
});
模型:
[Table(Name = "Laptop")]
public class Laptop
{
[Column(IsPrimaryKey = true)]
public int Id { get; set; }
[Column]
public string Name { get; set; }
[Column]
public decimal Price { get; set; }
}
如果我将控制器更改为以下内容,它将不返回任何内容:
var laptops = context.ExecuteQuery<Laptop>(@"exec [dbo].[sp_Select_Laptop]");
另外,如果我将类型从笔记本电脑更改为对象,则它不会返回任何内容。这导致我误解了一个基本事实。
在此先感谢大家!
编辑1:
存储过程代码:
CREATE PROC [dbo].[sp_Select_Laptop]
AS
SET NOCOUNT ON
SELECT
[ID], [Name], [Price]
FROM
[dba].[dbo].[Laptop]
GO
多亏了马丁(Maarten)和这个答案。
必须进行以下更改:
控制器:
DbContext dbcontext;
public HomeController()
{
this.dbcontext = new DbContext(Connections.connection);
}
var laptops = dbcontext.Database.SqlQuery<Laptop>(@"exec [dbo].[sp_Select_Laptop]");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句