使用Repository模式和ORM可以获得什么好处

时间:2018-04-27 19:11:27

标签: c# entity-framework repository-pattern

为什么我应该在EF已经实现它时使用Repository Pattern。

如果您在没有任何ORM的情况下使用ado.net,可能在这种情况下使用Repository Pattern会更好。考虑一个例子

这是测试存储库代码

public class TestRepository
{
    public void Create()
    {
        // Create logic
    }

    public void Update()
    {
        // Update logic
    }

    public void Remove()
    {
        // Remove logic
    }

    public void Read()
    {
        // Read operation
    }
}

因此,如果我想删除记录,我可以创建TestRepository的新实例并调用Remove方法。在Remove方法中发生了什么:

_dbContext.Test.Remove(Something);
_dbContext.SaveChanges();

我正在调用TestRepository Remove方法从数据库中删除一些东西,这个Remove方法调用从Entity框架中删除方法以删除记录。

我可以从具有实体框架的Repository Pattern获得什么好处? 是不是浪费时间来使用已经在实体框架中实现的存储库模式?

1 个答案:

答案 0 :(得分:0)

实体框架实现了更为通用的模式,称为“工作单元”(https://cpratt.co/repository-and-unit-of-work-patterns-with-entity-framework/)。 如果您不需要测试可与DAL一起使用的代码,那么您可以使用EF而无需额外的抽象级别。但EF只是Repository(和Unit of Work)模式的一个实现。你确定你找不到更好的实施方案吗?如果是,请直接使用EF。

回答您的问题,我认为这很大程度上取决于您的应用程序的复杂性和您的需求。 通过EF的额外抽象将允许您简化测试,并且它还允许您将EF更改为某些现代ORM或微型ORM(如Dapper)。根据我的经验,这个机会很酷。