'int'不包含定义,也不包含扩展方法

时间:2012-08-31 06:14:40

标签: c#

我面临以下错误

'int'不包含'LeaveType'的定义,并且没有扩展方法'LeaveType'接受类型'int'的第一个参数可以找到(你是否缺少using指令或汇编引用?)

这是我的代码:

public DataSet GetLeaveRecord(int empID)
{
    DataSet ds = new DataSet();
    try
    {
        SqlCommand cmd = new SqlCommand("[p_GetLeaveRecord_LMS]", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        cmd.Parameters.AddWithValue("@LeaveType", empID.LeaveType);
        cmd.Parameters.AddWithValue("@IdEmployee", empID.EmployeeId);
        cmd.Parameters.AddWithValue("@DateFrom", empIDd.DateFrom);
        cmd.Parameters.AddWithValue("@DateTo ", empID.DateTo);
        cmd.Parameters.AddWithValue("@Reason", empID.Reason);
        if (conn.State == ConnectionState.Closed)
        {
            conn.Open();
        }
        adapter.Fill(ds);
    }
    catch (Exception e)
    {
        throw e;
    }
    finally
    {
        if (conn.State == ConnectionState.Open)
        {
            conn.Close();
        }
    }
    return ds;
}

4 个答案:

答案 0 :(得分:0)

您正在将empID作为int类型参数传递,稍后您将其用作参数中的类型。例如。

 cmd.Parameters.AddWithValue("@LeaveType", empID.LeaveType);

我相信您必须在方法中传递EmployeeLeave类型的对象

GetLeaveRecord(int empID)

或者您可以根据方法中的ID获取对象,然后在参数中使用

答案 1 :(得分:0)

代码按预期工作。代码是否意味着在给定员工ID(empID)的情况下查找员工详细信息?你的意思是传递一个Employee对象吗?您是否缺少对包含int类型的扩展方法的命名空间的引用?

答案 2 :(得分:0)

请检查方法的签名

public DataSet GetLeaveRecord(int empID)

请将其更改为

public DataSet GetLeaveRecord(Employee emp)

将整个员工对象传递给此方法

答案 3 :(得分:0)

您的方法将int作为参数。

public DataSet GetLeaveRecord(int empID)

稍后您尝试通过执行

将其用作类型
cmd.Parameters.AddWithValue("@LeaveType", empID.LeaveType);

您确定参数应该是int而不是Employee或具有这些属性的某个对象模拟器吗? LeaveType,EMPLOYEEID ...

这样的东西?

public DataSet GetLeaveRecord(Employee emp)