首页 > 解决方案 > 如何使用 ms 实体 CRUD api 控制器和存储过程检查用户是否存在于 sql db 上

问题描述

我正在使用 Visual Studio、.net 5、swagger 和 Entity Framework Core。

我正在尝试检查用户是否在 SQL Server 中创建了配置文件。我使用 MS Graph API 来获取用户的“UserID”。现在我想检查这个人以前是否使用过这个应用程序,所以我将这个“UserID”发送到我的实体框架 API 控制器。

在 API 中,我使用了执行 SQL 查询的“代码 1”(如下所示)。我想发回我的应用程序它不存在。我尝试过不同的东西。我不是在询问 SQL 查询。我在问API。它拒绝让我返回虚假或任何东西。

如何更改代码片段 #1 以让我将错误信息发送回移动应用程序?

代码片段#1

[HttpGet("GetUserexist/{userms}")]
// GET: api/Users/GetUseridms/
public async Task<ActionResult<IEnumerable<User>>> GetUserexist(string userms)
{
    string StoredProc = "exec CheckIfUserExist " + "@UserID_MS = '" + userms + "'";

    return await _context.Users.FromSqlRaw(StoredProc).ToArrayAsync();
} 

代码片段#2(存储过程)

SELECT 
    CASE 
       WHEN EXISTS (SELECT * FROM [User]
                    WHERE UserId_MS = @UserId_MS)
          THEN CAST(1 AS BIT)
          ELSE CAST(0 AS BIT) 
   END

标签: c#sql-serverapientity-framework-core

解决方案


如果其他人需要,我自己设法做的最佳解决方案。

public async Task<ActionResult<IEnumerable<User>>> GetUsersMS(string userms)
        {

            string StoredProc = "exec FindUserIDAndUserID_MS " +
                    "@UserID_MS = '" + userms + "'";

            var user = await _context.Users.FromSqlRaw(StoredProc).ToListAsync();
            if (user.Count == 0)
            {
                return NotFound();
            }

            return Ok(user);

        }

推荐阅读