如何使用MVC和Entity Framework调用存储过程

时间:2015-07-29 17:33:23

标签: asp.net asp.net-mvc

我正在学习实体框架和MVC。我有以下旧代码使用SQL Adapter连接到数据库并调用存储过程来获取数据 我应该如何使用Entity Framework正确地重构它?感谢。

DataSet ds = new DataSet();
string connstr = ConfigurationManager.AppSettings["isr1DSN"];

using (SqlConnection con = new SqlConnection(connstr))
{
    con.Open();
    using (SqlCommand cmd = new SqlCommand("uspGetAssetUses", con))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@BaseCode", SqlDbType.VarChar, 5).Value = baseCode;
        cmd.Parameters.Add("@Scope", SqlDbType.VarChar, 6).Value = scopeID;
        cmd.Parameters.Add("@SortColumn", SqlDbType.VarChar, 20).Value = field;
        cmd.Parameters.Add("@Direction", SqlDbType.VarChar, 4).Value = direction;
        using (SqlDataAdapter sda = new SqlDataAdapter())
        {
            cmd.Connection = con;
            sda.SelectCommand = cmd;
            sda.Fill(ds);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

访问storedProcedure与访问表的模型类相同。假设您正在使用数据库代码方法,这将为您创建所有类文件(也适用于存储过程)

public ActionList FetchData(){
using (var context = new DBEntities()){
var results= context.uspGetAssetUses("Pass all your parameters serially in sequence").toList();
return View(results);
}
}

存储过程类应该具有由存储过程返回的列名的getter和setter。

namespace Models.uspGetAssetUses
{
    using System;

public partial class uspGetAssetUses
{
    public int BaseCode { get; set; }
    public string Scope { get; set; }
    public string Sort { get; set; }
    public string direction { get; set; }
    }
}

我希望这足以满足你的要求。