![]() |
1
8
在某些方面,它感觉像一个活动的记录模式,但实际上不是。基本示例:
活动记录
活动记录实际上只涉及一个类,该类包含模型并向SQL提供数据接口Linq,它遵循不同的路径,其中有几个模型类和一个单独的数据接口,也就是说,一个存储库。 PS:对于使用活动记录模式的ORM的一个很好的示例,请签出 Subsonic . |
![]() |
2
3
linq to sql本身不是ActiveRecord模式的实现。在Fowler的ActiveRecord模式的真正实现中,对象本身将负责从数据库中保存和加载其状态。当使用Linq to SQL对象时,DataContext负责数据库检索、跟踪对象状态,并将这些更改保存回数据库。 将这些linq-to-sql类包装在更多的代码中很难使其成为ActiveRecord模式的真正实现(没有简单的方法可以从DataContext中承担责任)。 |
![]() |
3
2
linq to sql不是的实现 Active Record 这意味着实体完全有责任管理自己的持久性(即感知持久性)。Linq to SQL实际上是 Unit of Work . 工作单元意味着某种类型的注册表或上下文可以隐式或显式地跟踪实体的状态,从而允许实体完全不知道其持久性机制(即持久性不知道)。 工作单元支持一种称为poco(普通的旧clr对象)的编程风格,这有助于维护 separation of concerns 并保持 principle of single responsibility . 当满足这两个原则时,您的软件通常更容易维护。活动记录实际上会破坏这两个主体,导致更紧密耦合的软件更难维护。 |
![]() |
Rm558 · 是否可以更改XML类型上的LINQPad代码生成? 7 年前 |
![]() |
MJK · 规范模式-使用ICollection实现表达式 7 年前 |
![]() |
Roland Ebner · 为实体框架多对多关系构建表达式树? 7 年前 |