Linq to sql 实体编程是如何改变我们对数据库的看法的?

Linq to sql 实体编程是如何改变我们对数据库的看法的?,linq-to-sql,entity-framework,domain-driven-design,orm,Linq To Sql,Entity Framework,Domain Driven Design,Orm,我想知道从关系型、基于表的设计到面向对象、基于实体的设计的转变是如何影响开发人员编写下一波应用程序的心态的 考虑到设计的本质,考虑实体驱动设计是否为时过早 我们是否培养了新一代的开发人员,他们不理解关系数据库设计和开发的基本原则,因为他们会被实体框架之类的工具屏蔽?实体框架真的足够聪明,可以为他们做出这样的设计决策吗?嗯,这是一个很难回答的问题 我不认为像“实体框架”这样的工具会导致培养出一代不理解关系数据库设计原则的开发人员。 首先也是最重要的是,面向对象设计已经有很长一段时间了,人们一直在寻

我想知道从关系型、基于表的设计到面向对象、基于实体的设计的转变是如何影响开发人员编写下一波应用程序的心态的

考虑到设计的本质,考虑实体驱动设计是否为时过早


我们是否培养了新一代的开发人员,他们不理解关系数据库设计和开发的基本原则,因为他们会被实体框架之类的工具屏蔽?实体框架真的足够聪明,可以为他们做出这样的设计决策吗?

嗯,这是一个很难回答的问题

我不认为像“实体框架”这样的工具会导致培养出一代不理解关系数据库设计原则的开发人员。 首先也是最重要的是,面向对象设计已经有很长一段时间了,人们一直在寻找解决方案来弥合OO和RDBMS之间的鸿沟

我看不到您所说的“实体驱动设计”(我更愿意称之为域驱动设计),而是用关系数据库设计代替它。事实上,对我来说,这两种技术将继续共存,因为这两种技术都是——IMHO——它们试图解决的问题的最佳解决方案: -OO是建模数据+行为的完美方式 -关系模型是高效存储数据并在其上运行查询的完美方式

如果您希望以领域驱动的方式(使用O/R映射器,如NHibernate或实体框架)成功创建应用程序,那么您——开发人员——仍然需要对关系模型的工作原理有基本的理解和知识。 事实上,您仍然在与关系数据库交谈,尽管是通过O/R映射器。 例如,如果您想要一个性能良好的应用程序,您必须知道关系数据库是基于集合的;执行SELECTN+1查询不是一个好主意,等等

事实上,我使用O/R映射器(NHibernate)已经有一年了(专业),我已经使用它好几年了,但我仍然更喜欢手工创建关系数据模型。我不通过我编写的类通过我的O/R映射器生成我的DB模型,因为我想控制它

这么简单的回答:我认为如果开发人员想要成功地使用O/R工具,仍然需要了解关系模型。

好问题

首先,我不认为我们还没有达到目标。实体框架和它的对等体是可以称为实体驱动设计的一些很好的早期步骤。但在设计我们的软件解决方案时,我们肯定远没有把这项技术视为理所当然

至于你的第二点

我们在培养新一代的人才吗 不理解 关系管理的基本原则 数据库设计和开发, 因为他们会被屏蔽 通过实体之类的工具来实现 框架

将当前软件开发中最痛苦的部分之一从日常开发人员那里封装出来会是一件坏事吗?当高级语言开始吸引开发人员远离C++时,我看到的与内存管理非常相似。这是否意味着您可以忘记内存管理?不,一点也不,但你不必像以前那样把注意力集中在它的强度上。让更多的大脑周期专注于软件的业务问题。如果可能的话,我期待有一天我可以用我的持久性模型做同样的事情