我很高兴使用EF来调用存储过程,而且我一直在搜索并尝试使用不同的代码无效。在查看了不同的样本之后,以下代码是我认为应该可行的最接近的代码。
我在下一行中遇到了设计时错误。在我的ValidateCSPolicyResult
行上,出现此错误:
ValidateCSPolicyResult是一种类型,在给定的上下文中无效
我确保在类的顶部有一个using语句,指向以下类所在的文件夹:
public class ValidateCSPolicyResult
{
public string IsValid { get; set; }
public string Remarks { get; set; }
}
这是我试图打电话的代码。存储过程有两个输出值。
using (var ctx = new DataContext())
{
var empId = new SqlParameter("@empId", employeeId);
var startDate = new SqlParameter("@startDate", startDateTime);
var endDate = new SqlParameter("@endDate", endDateTime);
var swapEmpId = new SqlParameter("@swapEmpId", swapEmployeeId);
var isValid = new SqlParameter
{
ParameterName = "Valid",
Value = "N",
Direction = ParameterDirection.Output
};
var remarks = new SqlParameter
{
ParameterName = "Remarks",
Value = "",
Direction = ParameterDirection.Output
};
var results = ctx.Database.SqlQuery(ValidateCSPolicyResult)("VALIDATE_CSW_POLICY @empId, @startDate, @endDate, @swapEmpId, @Valid out, @Remarks out");
}
答案 0 :(得分:1)
代码块中的错字,应该是
var results = ctx.Database.SqlQuery<ValidateCSPolicyResult>("VALIDATE_CSW_POLICY @empId, @startDate, @endDate, @swapEmpId, @Valid out, @Remarks out");