为什么我应该在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获得什么好处? 是不是浪费时间来使用已经在实体框架中实现的存储库模式?
答案 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)。根据我的经验,这个机会很酷。