You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
3.8 KiB
C#

6 years ago
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<User> result;
string querySql = "select * from [user] where id=@id";
using (IDbConnection connect = new SqlConnection(MsSqlHelper.ConnectString))
{
result = connect.Query<User>(querySql, new { userId });
}
return result.SingleOrDefault();
}
public IQueryable<User> GetUsers()
{
IEnumerable<User> result;
string querySql = "select * from [user]";
using (IDbConnection connect = new SqlConnection(MsSqlHelper.ConnectString))
{
result = connect.Query<User>(querySql);
}
return result.AsQueryable();
}
public IQueryable<User> GetUsers(Func<User,bool> predicate)
{
IEnumerable<User> result;
string querySql = "select * from [user]";
using (IDbConnection connect = new SqlConnection(MsSqlHelper.ConnectString))
{
result = connect.Query<User>(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<int>(querySql, new { @Name = userName});
}
return effectRow > 0;
}
}
}