gpt4 book ai didi

c# - 通用存储库 - IRepository 或 IRepository

转载 作者:IT王子 更新时间:2023-10-29 04:08:15 26 4
gpt4 key购买 nike

我见过两种不同的创建通用存储库的方法。这两种方法(优点和缺点)之间有什么区别?请忽略方法上的差异,因为我对

之间的差异感兴趣
 public interface IRepository<T> where T : class

 public interface IRepository : IDisposable

在功能、灵 active 、单元测试……方面有什么区别吗?我会得到什么或失去什么?
它们在依赖注入(inject)框架中的注册方式有什么不同吗?

选项 1

 public interface IRepository<T> where T : class
{
T Get(object id);
void Attach(T entity);
IQueryable<T> GetAll();
void Insert(T entity);
void Delete(T entity);
void SubmitChanges();
}

选项 2

 public interface IRepository : IDisposable
{
IQueryable<T> GetAll<T>();
void Delete<T>(T entity);
void Add<T>(T entity);
void SaveChanges();
bool IsDisposed();
}

最佳答案

最大的区别在于IRepository<T>绑定(bind)到单一类型,而 IRepository可能绑定(bind)到多种类型。哪一个合适在很大程度上取决于您的特定场景。

一般来说我找到IRepository<T>更有用。使用时非常清楚IRepository<T>的内容是什么是(T)。另一方面,从给定的 IRepository 中还不清楚它里面包含什么。

在我必须存储多种类型的对象的情况下,我通常创建一个 IRepository<T> 的映射。实例。例如:Dictionary<T,IRepository<T>> .

关于c# - 通用存储库 - IRepository<T> 或 IRepository,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1853414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com