【问题标题】:Execute stored procedure in ASP.NET MVC and LINQ在 ASP.NET MVC 和 LINQ 中执行存储过程
【发布时间】: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

【问题讨论】:

标签: c# sql-server ajax asp.net-mvc linq


【解决方案1】:

感谢Maartenthis answer

以下更改是必要的:

控制器:

DbContext dbcontext;
public HomeController()
{
    this.dbcontext = new DbContext(Connections.connection);
}

var laptops = dbcontext.Database.SqlQuery<Laptop>(@"exec [dbo].[sp_Select_Laptop]");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    相关资源
    最近更新 更多