请用c#编写一个泛型仓储库
时间: 2023-10-10 19:05:15 浏览: 1019
以下是一个简单的 C# 泛型仓储库实现:
```csharp
public interface IRepository<T> where T : class
{
void Add(T entity);
void Delete(T entity);
void Update(T entity);
T GetById(int id);
IEnumerable<T> GetAll();
}
public class Repository<T> : IRepository<T> where T : class
{
private readonly DbSet<T> _entities;
public Repository(DbContext context)
{
_entities = context.Set<T>();
}
public void Add(T entity)
{
_entities.Add(entity);
}
public void Delete(T entity)
{
_entities.Remove(entity);
}
public void Update(T entity)
{
_entities.Update(entity);
}
public T GetById(int id)
{
return _entities.Find(id);
}
public IEnumerable<T> GetAll()
{
return _entities.ToList();
}
}
```
上述代码中,我们定义了一个泛型接口 IRepository<T>,表示对实体 T 进行操作的仓储库。接着,我们实现了一个泛型类 Repository<T>,实现了 IRepository<T> 接口,从而实现了对实体 T 的增删改查等操作。
在 Repository<T> 类中,我们使用了 Entity Framework 的 DbContext 类型,从而能够访问数据库。我们在构造函数中通过 context.Set<T>() 方法获取到 DbSet<T> 对象,从而进行对实体 T 的操作。
该泛型仓储库可以用于对任何类型的实体进行增删改查等操作,从而大大减少了代码的重复性和冗余性,提高了代码的可读性和可维护性。
阅读全文