c# SqlSugar实现仓储模式
时间: 2023-06-24 15:02:58 浏览: 115
仓储模式是一种常见的设计模式,用于将数据访问逻辑与业务逻辑分离。在 C# 中,可以使用 SqlSugar 实现仓储模式。
首先,需要定义一个接口,用于声明对数据访问的操作:
```csharp
public interface IRepository<T>
{
IEnumerable<T> GetAll();
T GetById(int id);
void Add(T entity);
void Update(T entity);
void Delete(int id);
}
```
然后,实现这个接口:
```csharp
public class Repository<T> : IRepository<T> where T : class, new()
{
private readonly SqlSugarClient _db;
public Repository(SqlSugarClient db)
{
_db = db;
}
public IEnumerable<T> GetAll()
{
return _db.Queryable<T>().ToList();
}
public T GetById(int id)
{
return _db.Queryable<T>().InSingle(id);
}
public void Add(T entity)
{
_db.Insertable(entity).ExecuteCommand();
}
public void Update(T entity)
{
_db.Updateable(entity).ExecuteCommand();
}
public void Delete(int id)
{
_db.Deleteable<T>().In(id).ExecuteCommand();
}
}
```
在这个实现中,使用了 SqlSugar 提供的 Queryable、Insertable、Updateable 和 Deleteable 方法来执行对数据库的操作。
最后,可以在业务逻辑中使用这个仓储来访问数据:
```csharp
public class UserService
{
private readonly IRepository<User> _userRepository;
public UserService(IRepository<User> userRepository)
{
_userRepository = userRepository;
}
public IEnumerable<User> GetAllUsers()
{
return _userRepository.GetAll();
}
public User GetUserById(int id)
{
return _userRepository.GetById(id);
}
public void AddUser(User user)
{
_userRepository.Add(user);
}
public void UpdateUser(User user)
{
_userRepository.Update(user);
}
public void DeleteUser(int id)
{
_userRepository.Delete(id);
}
}
```
这样,就可以将数据访问逻辑和业务逻辑分离,使代码更加清晰和易于维护。