如何使用存储库模式查询交叉表?

She*_*Dev 9 asp.net-mvc join repository-pattern

在我的asp.net mvc 3应用程序中,我正在使用存储库模式.我有3个实体,公司,国家,城市.他们每个人都有自己的存储库.公司实体拥有FoundedCountry和FoundedCity外键.现在在视图中,我想展示公司的详细信息.在此视图中,我想查看公司详细信息以及FoundedCountry名称和FoundedCity名称.在我看来,我必须通过一种JOIN查询来处理这个问题.但我坚持如何在存储库模式中实现这一点.如何在存储库模式中处理此JOIN?

谢谢.

Mik*_*eSW 5

该存储库应具有基于任务的界面。这意味着ORM,联接等都在存储库内部。该应用程序仅看到一个接口,返回了它可以使用的对象。

这意味着您不会在表周围创建存储库(这几乎违反了目的)。在您的方案中,我建议您(至少)有2个存储库:一个存储库可处理与更新模型有关的所有内容,另一个存储库仅可读取(查询)。

这意味着查询存储库将仅返回所需的数据(它基本上返回视图模型位)。当然,实际的表和联接是存储库的实现细节。

  • 是的,关于模式,EF教程是错误的(我也看到了其他一些尴尬的决定)。其目的是推动EF,而不是教您有关存储库模式的信息。很多时候,使用存储库是非常人为的。该存储库是一个非常好的模式,我在每个项目中都使用它,但是并不是这样。还要提防通用存储库,它具有非常特定的适用性,尽管在大多数情况下是反模式。我也会在那里发表一些建设性的批评。 (3认同)