我正在学习实体框架和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);
}
}
}
答案 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; }
}
}
我希望这足以满足你的要求。