【发布时间】:2016-08-23 11:25:37
【问题描述】:
我对 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]");
此外,如果我将类型从笔记本电脑更改为对象,它不会返回任何内容。这让我明白了一个事实,即我误解了一些基本的东西。
提前谢谢各位!
EDIT1:
存储过程代码:
CREATE PROC [dbo].[sp_Select_Laptop]
AS
SET NOCOUNT ON
SELECT
[ID], [Name], [Price]
FROM
[dba].[dbo].[Laptop]
GO
【问题讨论】:
-
您能否提供
[dbo].[sp_Select_Laptop]代码,您还确定SP 本身会返回所需的值吗? -
是的,它返回所需的值。在 ssm-studio 中测试。
-
使用
context.Database.SqlQuery<TEntity>(...),见this question -
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀!
标签: c# sql-server ajax asp.net-mvc linq