【发布时间】:2011-05-11 17:06:24
【问题描述】:
我正在为我的应用程序使用 Entity Framework 4.1 和 ASP.Net MVC 3。 MVC 提供表示层,中间库提供业务逻辑,我猜 Entity Framework 有点充当数据层?
我可以将实体框架代码分成一组存储库类或其适当的变体,无论构成一个有价值的数据层,但我在解决我遇到的设计问题时遇到了麻烦。
如果存在多层方法来帮助我将关注点分开,那么我对数据持久性的选择也不应该是表示层关注的问题。问题是通过使用实体框架,我基本上将我的应用程序与自动跟踪和持久化实体更改的概念紧密耦合。
因此,假设在一个假设的世界中,我找到了不使用实体框架的理由并想将其换掉。一个设计良好的解决方案应该允许我在适当的层执行此操作并且不会影响依赖层,但是因为所有代码都是在数据层跟踪对象更改的知识下编写的,所以我只能换出实体以类似方式工作的框架,例如 nHibernate。
如何使用实体框架,但不需要以假设数据层正在跟踪实体更改的方式编写代码?
对于那些在他们自己的场景中仍然想知道这个问题的人的更新:
Ayende Rahien 写了一篇很棒的文章驳斥了整个论点:
http://ayende.com/blog/4567/the-false-myth-of-encapsulating-data-access-in-the-dal
【问题讨论】:
标签: entity-framework orm architecture entity-framework-4.1 separation-of-concerns