NerdDinner MVC4版本-为什么删除存储库类?

吉姆

我一直在检查NerdDinner教程。我正在阅读使用LINQ to SQL和MVC2的原始PDF教程(http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf)。在该教程中,他们实现了数据上下文,然后实现了存储库类以与数据实体进行交互。

我看到该项目已更新为使用MVC4和Entity Framework(http://nerddinner.codeplex.com),所以我浏览了该代码以查看它们实现了哪些更改。他们将项目更改为代码优先,并为每个数据实体使用了单独的模型类。令我惊讶的是,他们完全摆脱了存储库。

我以为通过存储库模式与数据库进行抽象通信通常是一种好习惯……我知道,为了简洁起见,教程经常会做出糟糕的设计选择,但是我想知道为什么已经实施了存储库的教程才能做出决定从此版本中忽略它们。

MVC4或EF中是否有某些东西会使存储库过时/冗余?

威克多(Wiktor Zychla)

关于将诸如Entity Framework之类的高级抽象包装在存储库中是否有意义,存在着长期的争论。

从历史上看,存储库很棒。为了能够在不同的数据提供程序,普通旧DataSet文件,文件,linq等之间切换,有一个额外的抽象层是安全的

但是,许多EF纯粹主义者声称EF已经是工作单元和存储库的抽象,其中数据上下文是工作单元,而dbset是存储库。他们声称LINQ是查询语言的足够好的抽象,并且您不需要特定的受限API。

其他人则说,假设所有可能的提供程序都为同一LINQ查询提供一致的结果是兼容的,这是不安全的。某些提供程序可能会受到限制,甚至拒绝评估特定查询。有人说,这意味着您仍然需要基于EF的抽象以便为更高的层保证相同的数据协定。

如果有人决定从示例中删除存储库层,则可能是由于以下两个原因之一:

  • 有人意识到存储库只会使示例变得更加复杂,因此为了简单起见将其删除
  • EF纯粹主义者的某人想提倡“任何事物都不能超越EF”这一事实。

就个人而言,我喜欢存储库,并尽可能使用它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

NerdDinner MVC4版本-为什么删除存储库类?

来自分类Dev

Ubuntu为什么选择在其存储库中放入ffmpeg 2.8.6版本?

来自分类Dev

为什么Windows版Git会创建无法从命令行删除的存储库?

来自分类Dev

如果存在MKV版本,如何自动删除文件的MP4版本?

来自分类Dev

为什么Windows的64位版本比32位版本大?

来自分类Dev

什么是SQL Server 8版本?

来自分类Dev

存储库的用途是什么,为什么MVC开发人员创建存储库?

来自分类Dev

为什么安装软件包的i386版本会触发x86_64版本的删除?

来自分类Dev

为什么不能同时安装多个x86和x86_64版本的库?

来自分类Dev

为什么django官方基金会在django 1.9版本中删除了“ syncdb”命令?

来自分类Dev

为什么构建版本坚持要寻找Scala 2.10版本的依赖项?

来自分类Dev

Server 2008版本和Windows 7版本之间的根本区别是什么?

来自分类Dev

为什么sbt-scapegoat试图解析1.0.0版本?

来自分类Dev

为什么我的build.sbt在寻找2.11版本的hadoop-streaming?

来自分类Dev

为什么没有VS2013的64位版本?

来自分类Dev

知道为什么Microsoft不提供“多个” X12 820版本吗?

来自分类Dev

为什么Java(> = 7版本)不支持没有主方法的程序?

来自分类Dev

为什么Android应用程序徽标不提供5.0版本?

来自分类Dev

为什么PHP框架Laravel从5.2版本开始就弃用Route FEATURE“ controller”?

来自分类Dev

为什么会有Windows 8的32位版本?

来自分类Dev

Opera为什么不发布Opera浏览器13和14版本?

来自分类Dev

为什么x64位版本比x32快得多?

来自分类Dev

为什么在x86_64系统上安装i386版本的软件?

来自分类Dev

为什么没有i686版本的Archlinux引导映像了?

来自分类Dev

为什么建议在Ubuntu.com上下载32位版本的Ubuntu?

来自分类Dev

为什么在安装Bluez 5.45之后bluetoothd显示5.37版本?

来自分类Dev

为什么PHP框架Laravel从5.2版本开始就弃用Route FEATURE“ controller”?

来自分类Dev

为什么sbt-scapegoat试图解析1.0.0版本?

来自分类Dev

为什么我的build.sbt在寻找2.11版本的hadoop-streaming?

Related 相关文章

  1. 1

    NerdDinner MVC4版本-为什么删除存储库类?

  2. 2

    Ubuntu为什么选择在其存储库中放入ffmpeg 2.8.6版本?

  3. 3

    为什么Windows版Git会创建无法从命令行删除的存储库?

  4. 4

    如果存在MKV版本,如何自动删除文件的MP4版本?

  5. 5

    为什么Windows的64位版本比32位版本大?

  6. 6

    什么是SQL Server 8版本?

  7. 7

    存储库的用途是什么,为什么MVC开发人员创建存储库?

  8. 8

    为什么安装软件包的i386版本会触发x86_64版本的删除?

  9. 9

    为什么不能同时安装多个x86和x86_64版本的库?

  10. 10

    为什么django官方基金会在django 1.9版本中删除了“ syncdb”命令?

  11. 11

    为什么构建版本坚持要寻找Scala 2.10版本的依赖项?

  12. 12

    Server 2008版本和Windows 7版本之间的根本区别是什么?

  13. 13

    为什么sbt-scapegoat试图解析1.0.0版本?

  14. 14

    为什么我的build.sbt在寻找2.11版本的hadoop-streaming?

  15. 15

    为什么没有VS2013的64位版本?

  16. 16

    知道为什么Microsoft不提供“多个” X12 820版本吗?

  17. 17

    为什么Java(> = 7版本)不支持没有主方法的程序?

  18. 18

    为什么Android应用程序徽标不提供5.0版本?

  19. 19

    为什么PHP框架Laravel从5.2版本开始就弃用Route FEATURE“ controller”?

  20. 20

    为什么会有Windows 8的32位版本?

  21. 21

    Opera为什么不发布Opera浏览器13和14版本?

  22. 22

    为什么x64位版本比x32快得多?

  23. 23

    为什么在x86_64系统上安装i386版本的软件?

  24. 24

    为什么没有i686版本的Archlinux引导映像了?

  25. 25

    为什么建议在Ubuntu.com上下载32位版本的Ubuntu?

  26. 26

    为什么在安装Bluez 5.45之后bluetoothd显示5.37版本?

  27. 27

    为什么PHP框架Laravel从5.2版本开始就弃用Route FEATURE“ controller”?

  28. 28

    为什么sbt-scapegoat试图解析1.0.0版本?

  29. 29

    为什么我的build.sbt在寻找2.11版本的hadoop-streaming?

热门标签

归档