在我学习 ASP.NET MVC 4 应用程序中,我使用存储库模式和服务层。项目中使用了实体框架和 Autofac。我的数据类很简单,几乎所有的操作都是基本的 CRUD 操作。
我有一个抽象的存储库库:
public abstract class RepositoryBase<T> where T : class
这是实体 Sample1 的示例存储库:
public class Sample1Repository : RepositoryBase<Sample1>, ISample1Repository
{
public Sample1Repository(IDatabaseFactory databaseFactory)
: base(databaseFactory)
{
}
}
public interface ISample1Repository : IRepository<Sample1>
{
}
这是我的控制器:
public class SampleController : Controller
{
private readonly ISampleService _sampleService;
public SampleController(ISampleService sampleService)
{
this._sampleService = sampleService;
}
}
最后,这是我的服务:
public interface ISampleService
{
IEnumerable<Sample1> GetSample1s();
Sample1 GetSample1(int id);
void CreateSample1(Sample1 item);
void DeleteSample1(int id);
void SaveSample1();
}
public class SampleService : ISampleService
{
private readonly ISample1Repository _sample1Repository;
private readonly IUnitOfWork _unitOfWork;
public SampleService(ISample1Repository sample1Repository, IUnitOfWork unitOfWork)
{
this._sample1Repository = sample1Repository;
this._unitOfWork = unitOfWork;
}
}
现在,我有这些问题:
1)我是否需要为每个实体存储库创建一个单独的类。(即实体 Sample2 的另一个 Sample2Repository)
2)我可以使用通用服务来完成这些 CRUD 任务吗?
3) 如果通用服务是可能的。我如何在 Autofac 引导程序中注册它/它们?