我已经为多个域实现了IRepository接口,但我不知道如何调用特定的方法。
以下是代码:
public interface IRepository<T> where T : class
{
IEnumerable<T> GetAll();
void Add(T entity);
void Update(T entity);
}
public interface IProjectRepository : IRepository<ProjectType>, IRepository<Project>, IRepository<ProjectDetail>
{
}
public class ProjectRepository : IProjectRepository
{
// implemenation
}
现在,当我创建ProjectRepository类的对象时,它显示了接口的所有方法,但只期望projecttype参数。
我不知道,这是正确的实施方式吗?还是有另一种方法来实现类似的东西吗?
答案 0 :(得分:4)
通用存储库IRepository<T>
不是IMO的好解决方案,请看http://www.sapiensworks.com/blog/post/2012/03/05/The-Generic-Repository-Is-An-Anti-Pattern.aspx
我认为最好在没有通用参数和常用方法的情况下单独指定每个存储库(您确定在所有存储库中始终需要Add
,Update
,GetAll
吗?)
答案 1 :(得分:0)
我认为使用工作单元模式创建Generic存储库会更好
看看
http://www.asp.net/mvc/tutorials/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application
这是关于实现具有工作单元的通用存储库的好教程
并在
http://contosontiermvc.codeplex.com/SourceControl/changeset/view/13936#ContosoUniveristy/ContosoUniveristy/Controllers/CourseController.cs
。这是代码示例