无法使用输出参数编写EF 6调用存储过程的代码?

时间:2018-01-30 20:42:30

标签: c# entity-framework stored-procedures

我很高兴使用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");
}

1 个答案:

答案 0 :(得分:1)

代码块中的错字,应该是

var results = ctx.Database.SqlQuery<ValidateCSPolicyResult>("VALIDATE_CSW_POLICY  @empId, @startDate, @endDate, @swapEmpId, @Valid out, @Remarks out");