首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >违反持续无知

违反持续无知
EN

Software Engineering用户
提问于 2017-11-27 02:57:26
回答 1查看 548关注 0票数 -5

我读过关于坚持无知原则的文章,电子书给出了一些违反这一原则的例子,但我不明白。你能帮我解释一下吗?

代码语言:javascript
运行
复制
Some examples of violations of this principle include:
• A required base class
• A required interface implementation
• Classes responsible for saving themselves (such as the Active Record pattern)
• Required default constructor
• Properties requiring virtual keyword
• Properties forced to use certain types (for example, collection properties must expose
ICollection, not just IEnumerable)
• Persistence-specific required attributes
EN

回答 1

Software Engineering用户

回答已采纳

发布于 2017-11-27 07:57:59

这看起来像是“不要使用ORMs列表”,而不是其他任何东西。因为这些“违规”大多是使用像nHibernate和实体框架这样的ORM的要求。

负责保存自己的类(例如活动记录模式)

这一点是显而易见的,因为知道如何坚持自己的阶级并不是坚持不懈--无知。以及ORM是如何在Rails中工作的(从我记忆中开始)。

*所需基类

在实体框架的旧版本中,每个要持久化到数据库的实体都必须继承实体框架的基类。这受到了广泛的批评,人们并没有真正使用它。

所需的默认构造函数·属性需要使用特定类型的虚拟关键字·属性(例如,集合属性必须公开ICollection,而不仅仅是IEnumerable)

这是使用nHibernate (以及实体框架的“更新”版本)使类可持久化的要求。这是因为nHibernate创建一个包装类并向所有属性添加更改监听器,从而要求它们是虚拟的,并且还需要能够创建类本身,因此需要无参数构造函数。

大多数人认为nHibernate强加的需求是必要的,因为唯一的选择是推出您自己的持久性层,或者将持久性层中的实体复制为愚蠢的DTO。

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

https://softwareengineering.stackexchange.com/questions/361305

复制
相关文章

相似问题

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