我正在我的大型ASP.NET MVC5应用程序中实现存储库模式。对于表和视图,我认为很好但是我有点混淆如何为导入的函数和过程创建存储库,就像方法一样
_context.spGetSomething(1,"name");
我发现的函数和过程的所有存储库都使用sql命令或sql查询。是否有任何关于进口程序的良好做法的例子?
我的存储库现在看起来像这样
interface IRepository<T>:IDisposable
{
void Delete(int ID);
void Update(T entity)
void Insert(T entity)
IQueryable Select()
}
public abstract class AbstractRepository<T>:IRepositori<T>
{
protected MyDbContext context;
public AbstractRepository(MyDbContext db)
{
context= db;
}
//interface implementation
}
在控制器中
public MyController:Controller
{
private IRepository<MyModel> _repository;
MyController()
{
_repository= new MyRepository(dbcontext);
}
// some actions
}
答案 0 :(得分:0)
我们对存储过程使用特殊/额外的InfoEntity和InfoRepository,这种结论很有用。我们的BaseRepository有两个方法:SelectInfo和ListInfo。
但是我们使用Dapper作为ORM而我没有使用EntityFramework。
其他:您可以使用像Unity这样的IoC容器来插入控制器的构造函数Repository实例。在数据访问层之间提供beter分离,并且可以测试。