我一直在努力与NHibernate,LINQ到SQL,和Entity Framework相当长的一段时间。 而我看到使用ORM继续发力移动迅速,代码简单,好处对象关系阻抗失配降到最低,我仍然觉得很难说服一个ORM的强项难改SQL DBA。 从我的角度来看的ORM可用于所有的数据访问让那些真正的毛茸茸的东西,过程或函数来进行适当的至少90-95%。 我绝不是说我们必须在ORM尽一切的家伙!
问:什么是一些更好的论据说服一个老同学的DBA,使用的ORM的是不要从一个程序员设想绝对最差的主意!
我一直在努力与NHibernate,LINQ到SQL,和Entity Framework相当长的一段时间。 而我看到使用ORM继续发力移动迅速,代码简单,好处对象关系阻抗失配降到最低,我仍然觉得很难说服一个ORM的强项难改SQL DBA。 从我的角度来看的ORM可用于所有的数据访问让那些真正的毛茸茸的东西,过程或函数来进行适当的至少90-95%。 我绝不是说我们必须在ORM尽一切的家伙!
问:什么是一些更好的论据说服一个老同学的DBA,使用的ORM的是不要从一个程序员设想绝对最差的主意!
向他们解释创建一个应用程序的每一个动作一个存储过程是在几个层次上难以维护。
动态SQL具有所有这些问题和更多。
如果你想说服他,首先你需要了解他的问题是使用ORM的东西。 给你的好处通用的列表是不太可能有帮助,如果它不解决他的问题。
然而,我的第一个猜测,他的问题是,这阻止他做任何优化,因为你是直接访问表中,所以他也没有其背后工作的抽象层,因此,如果一个表需要改变或(去),然后归而不会破坏你的应用程序,他不能做到这一点。
如果你想知道为什么一个DBA会喜欢这种感觉,以及如何应对它,那么它的大致相同,他来给你,说他要你做的所有类中的私人领域的公共和你不问他的第一个改变不了任何人。 想象一下,怎样才能让他说服你,这是一个好主意,然后用同样的理由在他身上。
我想,我的第一个问题为“说服难改DBA 使用ORM”将是:是对DBA也是一种程序员也适用数据库之外,让他/她将“使用ORM”? 如果没有,那么为什么会在DBA放弃他们的工作给别人,从而显著降低其总体实用性公司的重要组成部分? 他们不会。
在任何情况下,要说服任何事情任何工程师最好的办法是用经验数据。 设置与实际应用的几个部件的原型移植到ORM为您演示的目的,实际上证明您的观点。
在另一点我想你不明白,如果你想使用它作为参数传递给使用对象关系映射器对象关系阻抗困境。 数据库管理员可以从该链接您张贴在那里说“映射等私人对象表示对数据库表使这样数据库易碎根据OOP理念 ”,而且这个问题是进一步突出“引述尤其当对象或类定义映射(ORM)在一个简单的方法,以数据库表或关系模式”所以根据你自己的链接,通过促进ORM你是推广的问题。
通过使用存储过程的DBA可以自由地进行更改基础架构,只要存储过程仍然返回与同类型相同的列。 正是如此这个抽象存储过程添加,直接模式映射问题成为泡影。 然而,这并不意味着你需要放弃你心爱的EF英孚以来,现在可以很高兴地与存储过程中使用。
使用程序,是因为预测的缓存机制更加有效。 然而,许多DBA矫枉过正的程序,引入大量的以IF命令,导致场景中它们变得不可缓存分支逻辑的。
接下来,如果您打算跨越多个平台的数据逻辑程序是唯一有用的; 一个网站和单独的客户端应用程序,例如。 如果你只是做一个Web应用程序,程序引入抽象和更多的事情忙里忙外的不必要的水平。 不必调整表,然后一个过程,那么数据模型是通过调整的ORM的单一模式就足够了,当大量的工作。
最后,夫妻程序代码到你的数据库非常紧密。 如果要迁移到不同的数据库,你必须迁移所有的程序,其中一些可能需要大量重写。 这种迁移是一个ORM显著容易,因为你可以抽出了后台安装,而不前端应用知道差一个新的。