[英]Executing a Stored Procedure from EntityFramework - Code First
我有一个SQL存储过程(SP) uspGetLocationsforUser ,我正在从我的MVC项目中尝试。
我首先通过将以下代码添加到Context Class(DAL)将其映射到EntityFramework:
public virtual ObjectResult<uspGetLocationsforUser_Result> uspGetLocationsforUser(string userName)
{
var userNameParameter = userName != null ?
new ObjectParameter("UserName", userName) :
new ObjectParameter("UserName", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<uspGetLocationsforUser_Result>("uspGetLocationsforUser", userNameParameter);
}
此类已添加到模型中,以表示SP的返回结果:
public class uspGetLocationsforUser_Result
{
public int LocationID { get; set; }
public string LocationName { get; set; }
}
我想从代码中调用它,由于某种原因,它不起作用:
我正在尝试这样做:
using (var data = new DAL())
{
List<uspGetLocationsforUser_Result> results = data.uspGetLocationsforUser(userName).ToList();
}
能否请你帮忙?
提前致谢。
更新资料
这是错误消息:
“在容器'DAL'中找不到FunctionImport'uspGetLocationsforUser'。”
解决方案是我必须添加存储过程所属的SQL模式名称。
然后执行以下操作:
var userName = GetUserWindowsLoginName();
SqlParameter logonName = new SqlParameter("@userName", userName);
List<uspGetLocationsforUser_Result> results = data.Database.SqlQuery<uspGetLocationsforUser_Result>("admin.uspGetLocationsforUser @userName", logonName).ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.