当EF已经实施时,为什么要使用存储库模式。
如果您仅在没有任何ORM的情况下使用ADO.NET,则最好使用存储库模式。考虑一个示例
这是测试存储库代码
public class TestRepository
{
public void Create()
{
// Create logic
}
public void Update()
{
// Update logic
}
public void Remove()
{
// Remove logic
}
public void Read()
{
// Read operation
}
}
因此,如果我想删除记录,我可以制作新的testrepository实例并调用删除方法。删除方法中发生了什么:
_dbContext.Test.Remove(Something);
_dbContext.SaveChanges();
我正在调用testrepository删除方法以删除数据库中的内容,此删除方法调用删除方法从实体框架中删除记录。
从实体框架中,我可以从存储库模式中获得什么好处?这不是浪费时间使用已在实体框架中实现的存储库模式?
实体框架实现了更通用的模式,称为'工作单位'(https://cpratt.co/repository-and-unit--unit-ounit-of-work-work-patterns-with-entity-framework/(。如果您不需要测试将与DAL一起使用的代码,则可以使用EF而无需其他抽象。但是EF只是存储库(和工作单位(模式的实现。您确定找不到任何更好的实现吗?如果是,请直接使用EF。
回答您的问题,我认为这在很大程度上取决于您的应用程序和需求的复杂性。EF上的其他抽象将使您可以简化测试,并且还可以使您将EF更改为像Dapper这样的现代ORM或微型官员。根据我的经验,这个机会非常酷。