ORM的优势非常明显。但我注意到有些公司更愿意建造自己的自制ORM。为什么呢?
答案 0 :(得分:9)
我可以看到只有两个论点可以用来处理你的ORM(过去曾经发生过这些问题,这迫使我自己编写):
该公司拒绝使用开源软件,因为他们认为这些软件可能会蔓延到他们的应用程序中。
公司拒绝在商业ORM上花钱。
任何其他论点(如实体框架的质量太差,我们无法使用它)完全没有实际意义。无论实体框架(或者您可能指的是其他任何ORM)有多糟糕,您都不会亲手实现自己的稳健性和可靠性。
答案 1 :(得分:7)
由于O / R映射器是非常复杂的软件,因此编写自己的软件超出了典型的datareader包装器和预制SQL查询执行器将花费大量时间(至少考虑6个月以上的全职工作时间)。这不是最大的问题。最大的问题是,一旦你使用自己的O / R映射器,你必须在使用它的应用程序正在生产的剩余时间内维护它。这可能是很长一段时间。毫无疑问,自己维护一个O / R映射器并不是一项简单的任务:你必须重新发明O / R映射器开发人员已经知道并解决了自己的每一个技巧。
最后但并非最不重要的一点:自己做这件事不应该在可计费合同上完成。毕竟,您正在编写已在其他地方提供的基础架构代码。
我知道我有偏见(我写过LLBLGen Pro),但我也是这个行业中为数不多的人之一,他编写了一个完整的O / R映射器框架,并且知道如何获得一个体面的和以良好的性能和出色的功能集运行。
简单地算一算:如果获得o / r映射器框架许可证需要1000美元(或更少),并且您可以立即开始使用客户的应用程序,那么您需要花费多少小时来获得1000美元所以你可以建立O / R映射器而不花费公司任何钱?并保持它?你无法用这笔钱做到这一点。
答案 2 :(得分:3)
如果您的内部数据库已经发展为具有错误的架构,那么编写自己的ORM层比尝试更简单,并获得一个开箱即用的解决方案以便与它配合使用。
答案 3 :(得分:1)
在我看来,ORM专门用于解决典型问题。如果您想要一些更通用的解决方案(例如,对于更复杂的查询)或只是不同的功能,您可以修改现有的解决方案(出于各种原因通常不是最佳选择)或创建自己的解决方案。
ORM还通过强迫您使用其约定并接受其限制来限制您。