首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET实体框架中有哪些设计模式?

.NET实体框架中有哪些设计模式?
EN

Stack Overflow用户
提问于 2011-11-15 14:01:37
回答 1查看 3K关注 0票数 4

我被问到“实体框架中使用了哪种四种设计模式”。我真的想不出任何一个。

有人能帮助识别EF中的一些GOF设计模式吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-15 19:24:15

查看http://en.wikipedia.org/wiki/Design_Patterns_(book和那里列出的GoF-patterns,我列出了这个列表:

  • Factory方法是一个实体框架ObjectContext,它提供了一个CreateObjectSet<T>方法,它为给定的类型创建一个ObjectSet<T>。由于这些对象集是访问上下文中实体的主要方法,我想说它也是EF.
  • Proxy,中使用的一个非常重要的模式。EF显然会为您的实体动态地创建代理类型(除非您告诉它不要这样做,或者它不能创建代理,因为一个类是密封的,或者不能被限定为“可代理”属性。这可能有点牵强,但是为了在代理类型中实现延迟加载,导航属性的type).
  • Decorator,-getter是重载的,执行延迟加载,直到被请求为止。这是在代理类型中处理的,但也取决于是否启用了延迟加载,以及导航属性SQL引入了Entity- itself.
  • Interpreter,,这是一种也具有面向对象实体知识的通用形式的SQL。你可以将这些查询定义为字符串,然后由EF解释并转换为依赖于提供者的SQL.
  • Strategy,查看ObjectContext.SaveChanges方法的各种重载,你可以从用于确定在已知entities.
  • Memento,上所做的更改的不同策略中进行选择。ObjectStateManager跟踪对实体所做的更改,并可用于访问这些信息,包括IQueryable公开的实体集,因为IQueryable应该被限定为“到大量代码的简化接口”。因为将这样的表达式转换成实体SQL并且特定于提供者的SQL是一个大的deal.
  • Observer,,所以ObjectContext提供了两个事件ObjectMaterializedSavingChanges。由于.NET事件是观察者模式的实现,因此EF也适用于此模式。

我在这里可能对命名模式非常慷慨,但通过深入挖掘,您可以发现EF实际上实现了这些模式的很多地方。但由于这本书已经出版了近20年,你可以预期其中一些模式被认为是一个标准,这是不值一提的。例如,观察者模式或迭代器模式(我没有提到,只是因为IQueryable实现了IEnumerable)。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8132133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档