如何在ASP .NET Core Web API中调用SQL查询

时间:2019-05-21 08:14:42

标签: asp.net-core

我正在尝试使用React前端和ASP .NET Core后端创建登录页面。 因此,当用户登录系统时,我必须使用类似的查询

  

从UserLogin中选择*,其中email =“ asbhf@gmail.com”

这样我的API URL应该是

  

https://localhost:44383/api/UserLogins?email=“ asbhf@gmail.com”

因此,我在UserLoginController.cs中尝试了此代码

// GET: api/UserLogins?email="asd@gmail.com"
        public async Task<IActionResult> GetUserLogin([FromRoute] string email)
        {
            if (email == null)
            {
                return NotFound();
            }

            string query = "SELECT * FROM UserLogin WHERE email = @email";
            var UserLogin = await _context.UserLogin
            .FromSql(query, email)
            .Include(d => d.Username)
            .AsNoTracking()
            .FirstOrDefaultAsync();

            if (UserLogin == null)
            {
                return NotFound();
            }
            return Ok(UserLogin);
        }

但是,它不会像我期望的那样打印任何输出。您能否给我任何解决我问题的提示。

2 个答案:

答案 0 :(得分:0)

首先,Include方法指定要包含在查询结果中的相关对象。它可用于从数据库中检索某些信息,并且还希望包含相关实体,而不指定要返回的字段。有关更多详细信息,请参阅here

第二,您的数据查询部分中存在一些错误,请尝试以下修改:

string query = $"SELECT Username FROM UserLogin WHERE email = @email";
var p1 = new SqlParameter("@email", email);

var UserLogin = await _context.UserLogin
              .FromSql(query, p1)
              .AsNoTracking()
              .FirstOrDefaultAsync();

您可以查看Executing Raw SQL QueriesFromSql的用法。

答案 1 :(得分:0)

我推荐了write sql query for entityframework

所以我的工作代码是

 var UserLogin = _context.UserLogin.Where(c => c.Email == email);