我在哪里可以通过MVC框架中的存储过程获得有关实体框架的优秀教程?
在这种情况下,当我几乎所有内容都写在存储过程中时,使用Enterprise库是否更好。
注意:我正在使用存储过程,因为它们非常复杂,其中一些超过1000行。
答案 0 :(得分:41)
MVC在这种情况下绝对不相关。从EF调用存储过程的方式仍然是相同的。我想你想使用存储过程而不实际使用实体和linq-to-entities(主要EF功能),不是吗?通常你需要:
ObjectContext
和所有实体。ObjectContext
上创建方法,这将允许您像任何其他.net方法一样调用存储过程。您也不必使用函数导入和you can execute procedures directly,只需调用:
objectContext.ExecuteSqlCommand("storedProcedureName", SqlParameters)
表示SP没有返回记录集objectContext.ExecuteStoreQuery<ResultType>("storedProcedureName", SqlParameters)
用于返回记录集的SP。 ResultType
必须具有与结果集中的列具有相同名称的属性。它只能用于平面类型(没有嵌套对象)。使用存储过程时存在一些限制:
答案 1 :(得分:1)
如果您正在使用Entityframwork Code-first,这样就可以使用存储过程,在本例中我有四个输入参数。
var startDateTY = masterSales.PolicyStartDate;
var endateTY = masterSales.PolicyEndDate;
var startDatePY = masterSales.PolicyStartDate.Value.AddYears(-1);
var endatePY = masterSales.PolicyEndDate.Value.AddYears(-1);
var spParameters = new object[4];
spParameters[0] = new SqlParameter()
{
ParameterName = "startDateTY",
Value = startDateTY
};
spParameters[1] = new SqlParameter()
{
ParameterName = "endateTY",
Value = endateTY
};
spParameters[2] = new SqlParameter()
{
ParameterName = "startDatePY",
Value = startDatePY
};
spParameters[3] = new SqlParameter()
{
ParameterName = "endatePY",
Value = endatePY
};
var datalist = objContext.Database.SqlQuery<vMasterSalesAgentReport>("dbo.usp_GetSalesAgentReport @startDateTY,@endateTY,@startDatePY,@endatePY", spParameters).ToList();
答案 2 :(得分:0)
store = "sp_selectmark @regid='" + id + "'";
var st = db.ExecuteStoreQuery<Sp>("exec " + store).ToList();
GridView1.DataSource = st;
GridView1.DataBind();
string store = "";
store = "sp_inserttbreg @name='" + regobj.name + "',@age='" + regobj.age + "',@place='" + regobj.place + "',@gender='" + regobj.gender + "',@email='" + regobj.email + "',@fon='" + regobj.fon + "'";