我尝试将SP添加到edmx文件中,但输入参数未显示。我尝试使用下面的代码,但它出错了。
IEnumerable<Finance> userFinance =
((IObjectContextAdapter)this)
.ObjectContext.ExecuteStoreQuery<Finance>("GetFinanceContent @userId", parameter);
我也尝试过:
SqlParameter parameter = new SqlParameter
{
DbType= DbType.Int32,
Direction = ParameterDirection.Input,
Value= 100,
ParameterName ="userId"
};
var results= db.Database.ExecuteSqlCommand ("GetFinanceContent @userId", parameter);
这会给出一些参数错误。 只能存储MySqlParameter对象
答案 0 :(得分:0)
使用EF4中的存储过程进行Woking非常简单。这里不需要在edmx文件中添加Sp就可以直接访问它,只需按照这些规则使用函数映射......
更新您的模型并在其中添加存储过程。
现在在模型浏览器视图中转到存储过程文件夹,您将看到添加的SP。
现在选择SP并通过右键单击选择“创建函数导入”选项。
现在函数导入窗口将在其中打开返回类型部分根据您的SP返回的数据选择返回类型..
- &GT;如果您的SP返回实体的完全匹配,请选择该实体。如果是标量值,则选择其返回类型,否则您需要创建一个与您的SP结果完全匹配的实体。
之后你可以像这样访问SP。
using(EFEntity ef = new EFEntity ())
{
var results = from result in ef.YourSpName(Param1, param2,..)
select result
}
希望这会对你有帮助..
更新的答案: 正如你所说,你没有得到参数,这意味着你的SSDL中没有定义参数,所以你必须这样做。
Here是您问题的解决方案。
祝你好运