实现存储库模式,做测试(Implementing Repository pattern and do

2019-06-28 01:32发布

我看了几乎所有关于Repository模式和它的不同实现的文章。 他们中的许多判断不良做法(例如:使用IQueryable<T>而不是IList<T>等就是为什么我仍然停留,无法最终达到正确的。

所以:

  • 我需要库模式在我的MVVM应用程序,申请的IoC?

  • 如果是,什么是有效的IRepository实施EF实体这是一个很好的做法,更好的可测试?

  • 如何测试我的库和的UnitOfWork行为? 单元测试对内存库? 集成测试?

编辑 :根据答案我添加的第一个问题。

Answer 1:

Ayende Rahien有很多关于库帖子http://ayende.com/blog/search?q=repository ,当你使用ORM就是为什么它是坏的。 我认为库是要走的路。 也许是因为,在2004年不是现在。 ORM的已经实现了仓库。 在EF的情况下,它是IDbSet。 和的DbContext是的UnitOfWork。 创建一个存储库来包装EF或其他ORM的增加了很多不必要的复杂性。

这样做的代码将与数据库交互的集成测试。



Answer 2:

Repository模式,当您使用EF,所以你应该确保你需要间接的这种额外的水平增加了一个额外层。

Repository模式的本意是为了保护上述从复杂并了解数据库的结构中的层。 在许多方面,英孚的ORM模型保护从物理实现的代码在数据库中,因此需要对储存较少。

有两个基本的选择:

  • 让业务层直接交谈的EF模型
  • 建立一个实现信息库模式的数据层,这个层映射EF对象POCO

对于测试:

  • 当我们使用EF直接,我们使用一个事务范围与回滚,从而使测试不改变数据。
  • 当我们使用存储库模式,我们用犀牛嘲笑嘲笑库

我们采用两种方法,Repository模式给出了更层次分明的应用程序,因此,也许更多的控制,使用EF直接给出用更少的代码,因此加快构建的应用程序。



文章来源: Implementing Repository pattern and doing Tests