必须声明标量变量“@nInstID”

must declare the scalar variable "@nInstID"

我正在使用 ADO.NET 实体数据模型来访问我的 table 和存储过程。我将存储过程映射到我的 Room table,因为它返回 sfloor 列。在Entity Framework,我获取楼层的请求方法是:

public List<Floor> GetFloorList(long instID,long userID,string userRole, long buildID, long deptID)
{
    try
    {
        var floors = dbdata.Database.SqlQuery<Room>("GetUserFloorList @nInstID, @nUserID, @sUserRole, @nBuildID, @nDeptID", instID, userID, userRole, buildID, deptID);

        List<Floor> floorList = new List<Floor>();

       foreach (var fl in floors)
        {
            Floor floor = new Floor();
            floor.floorName = fl.sFloor;
            floorList.Add(floor);
        }

        return floorList;
    }
    catch(Exception)
    {
        throw;
    }
}

因为我想列出所有属于相应参数的楼层名称。但是当我运行这个方法时,它给了我上面的错误。

根据某些解决方案,我需要提及每个变量的数据类型,但我不确定该怎么做。谁能告诉我该怎么做?

提前致谢。

您必须使用 new SqlParameter("@nInstID", instID) 并为所有参数执行此操作,而不是直接使用变量传递参数。