c# - Entity Framework 从存储过程返回错误的值

标签 c# sql-server entity-framework-6

我有这个 SQL Server 存储过程:

    @UserName VARCHAR(MAX),
    @Result INT
AS
BEGIN
    SET NOCOUNT ON;

    SELECT LoginID 
    FROM Personnel
    WHERE LoginID = @UserName AND Administrator = 'Y'

    SET @Result = @@ROWCOUNT

    RETURN @Result
END

当我测试它时,我得到了预期的结果,我得到 1 行或 0 行计数。

我使用以下代码从 C# 应用程序调用存储过程:

private void ValidateUser(string user)
{
    using (ComplaintsEntities db = new ComplaintsEntities())
    {
        var t = db.AAGetAdminStatus(user,0);
    }
}

当我使用良好的用户帐户进行测试时,我应该得到 1 结果,如果我的用户不是管理员,我应该得到 0 结果。当我检查 C# 代码中的返回值时,它总是返回 -1。我怎样才能让它发挥作用?

最佳答案

@UserName varchar(max)
AS
BEGIN
  -- SET NOCOUNT ON added to prevent extra result sets from
  -- interfering with SELECT statements.
  SET NOCOUNT ON;

  -- Insert statements for procedure here
  Select count(LoginID) UserCount
  from Personnel
  where LoginID = @UserName And Administrator = 'Y'

END

实体代码:

private void ValidateUser(string user)
{
    using (ComplaintsEntities db = new ComplaintsEntities())
    {
        var t = db.AAGetAdminStatus(user).First().UserCount;
    }
}

关于c# - Entity Framework 从存储过程返回错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53822734/

相关文章:

c# - 防止添加到公共(public)词典

c# - 数据 GridView : DataGridViewImageColumn displays a red cross

c# - 从表达式中获取负数

c# - 设置 Flag 枚举除一个字段之外的所有值

c# - 访问 Int 变量时 SSIS 出现异常

sql - 如何在 SQL Server 中查找时、分、秒(所有结果)的时差

c# - Entity Framework 查询性能慢

entity-framework-6 - 打开 edmx 文件出现错误 "Object reference not set to instance of an object"

sql - 如何使用 Python3 连接到在 mac 上的 docker 内运行的 SQL Server?

c# - 如何将此sql语句转换为linq表达式