using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Data.Sql; using System.Data.SqlClient; using Dapper; using OAuth2Study.Model; using OAuth2Study.IDal; namespace OAuth2Study.Dal.MsSql { public class UserDal : UserIDal { public (bool result, User user) AddUser(User user) { int effectRow = 0; string sql = "insert into [user] (Name,Password,Age,Gender) values(@Name,@Password,@Age,@Gender)"; using (IDbConnection connect=new SqlConnection(MsSqlHelper.ConnectString)) { effectRow = connect.Execute(sql,user); //或者 //effectRow = connect.Execute(sql, new { @Name = user.Name,@Password=user.Password, @Age=user.Age, @Gender=user.Gender }); } if (effectRow > 0) { return ValueTuple.Create(true, user); } else { return ValueTuple.Create(false, user); } } public User GetUser(int userId) { IEnumerable result; string querySql = "select * from [user] where id=@id"; using (IDbConnection connect = new SqlConnection(MsSqlHelper.ConnectString)) { result = connect.Query(querySql, new { userId }); } return result.SingleOrDefault(); } public IQueryable GetUsers() { IEnumerable result; string querySql = "select * from [user]"; using (IDbConnection connect = new SqlConnection(MsSqlHelper.ConnectString)) { result = connect.Query(querySql); } return result.AsQueryable(); } public IQueryable GetUsers(Func predicate) { IEnumerable result; string querySql = "select * from [user]"; using (IDbConnection connect = new SqlConnection(MsSqlHelper.ConnectString)) { result = connect.Query(querySql).Where(predicate); } return result.AsQueryable(); } public bool RemoveUser(User user) { return RemoveUser(user.Id); } public bool RemoveUser(int userId) { int effectRow = 0; string query = "DELETE FROM [user] WHERE id = @id"; using (IDbConnection connect = new SqlConnection(MsSqlHelper.ConnectString)) { effectRow = connect.Execute(query, new { @id = userId }); } return effectRow > 0; } public (bool result, User user) UpdateUser(User user) { int effectRow = 0; string updateSql = "Update [user] Set Name=@Name, Password=@Password, Age=@Age, Gender=@Gender WHERE id =@id"; using (IDbConnection connect = new SqlConnection(MsSqlHelper.ConnectString)) { effectRow = connect.Execute(updateSql, user); } if (effectRow > 0) { return ValueTuple.Create(true, user); } else { return ValueTuple.Create(false, user); } } public bool ExitsByName(string userName) { int effectRow = 0; string querySql = "IF EXISTS (SELECT id FROM [dbo].[User] WHERE Name=@Name) SELECT 1 ELSE SELECT 0"; using (IDbConnection connect = new SqlConnection(MsSqlHelper.ConnectString)) { effectRow = connect.ExecuteScalar(querySql, new { @Name = userName}); } return effectRow > 0; } } }