在Entity Framework中正确实现UnitOfWork和Repository模式

时间:2018-04-22 11:24:47

标签: c# asp.net-mvc entity-framework entity-framework-6

我试图弄清楚如何使用Entity Framework正确实现UoW和Repository模式。我看到很多帖子反对它,但它似乎仍然是正确的方法。

我正在尝试根据此blog post进行操作。我想弄清楚的最后一件事是如何将存储库注入到UoW中,但这种方式可以让我按需执行。存储库的数量可能会增长,然后构造函数也会增长。此外,为可能只需要1或2的操作实例化所有存储库似乎是浪费资源。

如何以一种让我轻松编写单元测试的方式来实现?

我发现的唯一方法,就是让我在构造函数中注入存储库(因此它们并非都被实例化,即使它们不是特定操作所需的)也是在getter中执行的:

for package in Packages! {
   let titles = (package["title"]) as! String
   self.tts.append(titles)
}
self.collectionView.reloadData()

然而,这种方法会在代码中产生很多噪音,因为当我有50个存储库时,我需要50个道具。

1 个答案:

答案 0 :(得分:0)

您可能希望将描述的方法(我喜欢)与此处描述的通用存储库方法结合起来https://cpratt.co/truly-generic-repository/ 如果您所引用的博客文章中的UoW模式得到了适当的实现,那么除了本文中的IReadOnlyRepository之外,您将不需要任何其他内容,它将为存储库提供所需的一切。