与ORM一起使用存储库模式,我可以从中获得什么好处



当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或微型官员。根据我的经验,这个机会非常酷。

最新更新