如何在ASP.NET中使用MVC存储过程

时间:2015-08-12 19:26:37

标签: c# asp.net asp.net-mvc

我尝试了几种方法,但无法提出任何解决方案。 我在数据库中存储过程(它被称为'mike')并且它返回单个列表(称为“代码”)。已经使用ADO.NET EntityDataModel在Visual Studio(C#)中建立了连接。代码如下:

在控制器文件夹中

// Storage
sessionStorage.setItem('key', 'value');

// Retrieval
var field = sessionStorage.getItem('key');

// Destroy
sessionStorage.removeItem('key');

在模型文件夹中

public class TestController : Controller
{

    TestContext db = new TestContext();
    //
    // GET: /Test/

    public ActionResult Index()
    {

        var test = (from p in db.Mike() select new TestResult { sample = p.code}).ToList<TestResult>();

        return View(test);
    }

我收到的错误是

错误1'字符串'不包含'code'的定义,也没有接受第一个类型为'string'的参数的扩展方法'code'(你是否缺少using指令或汇编引用?)< / p>

我该如何解决?

1 个答案:

答案 0 :(得分:0)

示例过程(使用@Code过滤过程中的项目):

IF OBJECT_ID ('Mike', 'IF') IS NOT NULL 
    DROP FUNCTION dbo.Mike;
GO
CREATE FUNCTION dbo.Mike(
    @Code varchar(256)
) 
RETURNS TABLE
AS 
RETURN(--Select Whatever Where Code = @Code);
GO

在EF6中返回单一值的相应的程序代码:

public static string GetMike(string parCode) 
{
    if (parCode == null)
        throw new ArgumentNullException("parCode", "parCode cannot be a null reference");

    string r = null;
    using (var db = new YourDbContext())
    {
        r = db.Mike(parCode).First();
    }
    return r;
}

返回n行的过程代码(例如:在预定义的BindingSource中加载它):

using (var db = new YourDbContext())
{
     YourBindingBindingSource.DataSource = db.Mike(parCode).ToList();
}

(对于ToList() - &gt;使用System.Data.Entity)