我正在设计一个内部企业应用程序来管理使用 ASP.NET (C#)、nHibernate 和后面的 SQL Server 的小型企业贷款。
从我所做的大部分阅读来看,为每个域对象拥有单独的存储库(以及单独的服务层对象)似乎是相当普遍的做法——这对我来说似乎有点过分和开销。
考虑到这一点,我有一个基本的存储库接口和一个基于该接口的通用存储库类,用于除了基本 CRUD 操作(使用 ISession 和 ITransaction 处理)之外没有“特殊要求”的域对象,代码省略)
// Repository interface:
public partial interface IRepository<T>
{
void Add(T entity);
void Update(T entity);
void Remove(T entity);
ICollection<T> GetAll();
T GetByKey(int _ID);
}
// Generic repository - basic CRUD for most domain objects
public partial class BaseRepository<T> : IRepository<T>
{
protected ISession session;
...
public virtual void Add(T entity)
{ ... }
public virtual void Update(T entity)
{ ... }
public virtual void Remove(T entity)
{ ... }
public virtual ICollection<T> GetAll()
{ ... }
public virtual T GetByKey(int _ID)
{ ... }
}
如前所述<type>
,我希望能够使用这个BaseRepository
类作为 的业务对象,而不是为几十个存储库提供几乎相同的代码ObjectDataSource
,但它没有显示为可用选项“配置数据源”对话框。
甚至可以为此目的使用泛型吗?对于那里的任何 ASP.NET MVC 大师 - 使用该框架而不是 ASP.NET 更容易处理这个问题吗?