Good Features for an ORM我目前正在努力组装一个相当简单的ORM工具,以作为客户端各种Web项目的框架。大多数项目是内部项目,不需要大量的并发性,所有项目都将不利于SQL Server。我建议他们将其与SubSonic,NHibernate等ORM工具以及许多其他开源项目一起使用,但是出于可维护性和灵活性的原因,他们希望创建一些自定义项。所以我的问题是:我应该确保在此ORM工具中包括哪些功能?顺便说一句,我将使用MyGeneration来执行代码生成模板。 为了热爱所有圣洁的事物(包括妇女和儿童),请千方百计说服他们不要使用定制的O / RM解决方案。 为什么已经有完美的,开放源代码的轮子存在,人们为什么要重新发明轮子?!?! 如果您的客户对OSS不感兴趣,是因为(实际或想象中的)对支持的看法,那么您是否考虑过任何高质量的商业第三方ORM(例如LightSpeed),它都带有出色的GUI设计器工具 Mindscape(出售LightSpeed的公司)是一家新西兰公司,位于我居住的地方,我遇到了那里的一些开发人员,而且我知道他们以提供令人难以置信的客户支持而闻名。当您购买软件时,它们会为您提供源代码,因此您可以根据自己的喜好对其进行调整。 除非您必须这样做,否则您可能不希望自己推出ORM,并且客户愿意为您交出愚蠢的现金。 IMO编写自己的OR / M是您可能做出的最糟糕的设计决策之一。"可维护性和灵活性"是完全不编写自己的OR / M的原因。 请阅读查看不编写自己的对象关系映射器的25个理由,并查看您的客户是否真的想支付建造NHibernate(760万美元)或SubSonic(150万美元)之类的费用。因为,就像上面的ChanChan所说的那样,您最终会得到类似的结果。 Davy Brion(NHibernate提交者)有很多帖子,由于某些原因,他们也被迫为客户编写自定义ORM。 他涵盖的一些内容是:
绝对值得一试,如果您必须走这条路:构建自己的数据访问层系列
致谢, 也许只是,您非常需要现有解决方案中尚不存在的一些"功能"。也许您还需要一些更简单的方法。 Subsonic 1.5美元简直太离谱了。 我本人正在使用由我本人和我开发的自定义orm,对此我感到满意。地毯下没有隐藏的龙,也没有令人惊讶的场景。我的orm完全按照我的意愿去做,仅此而已。 根据我的经验,您需要采用nHibernate样式并具有它,以便在对象和数据库之间建立某种映射。这使您的对象具有一些难以在数据库中表示但在POCO中更容易表示的东西。 通过为您提供符合您的模式的类,生成可以使您入门,但是如果您打算维护任何内容或进行任何测试,那么映射就很麻烦了。 Subsonic是一个很好的模型,如果您必须进行下一代开发,可以使用它的开放源代码,在myGeneration中使用其模板来获得成功。 顺便说一句:我已经完成了您正在做的事情,最终得到了与亚音速非常相似的东西,现在建议我的客户采用亚音速源,并自行分叉。 尝试使用Devart LinqConnect-LINQ to SQL的所有功能以及对最受欢迎的数据库服务器(Oracle,MySQL,Postgre,SQL Server和SQLite)的广泛支持。难以置信的可视化建模工具,高级监视工具,高质量的支持-结果,我在项目执行过程中仅在三周内就学会了它。 您作为顾问的工作(听起来就是您的本职)是要利用您的专业知识,为客户实施以最小的成本和时间投入满足他们需求的解决方案。 如果他们想建立和销售OR / M。去镇上一个。如果他们想要其他任何东西,请使用已经存在的东西来完成工作。 如果他们坚持要花钱,那就买一个现有的(我不会透露任何名字,但是有一些不是免费的好东西。) 还没有人提到它;但请选择LLBLGen。您可以根据需要自定义模板,并且显然也可以在生成的类中编写自己的自定义代码。买吧。您将永远不会回头,并且您会说:"谢谢您的柔滑!"当它始终表现出色时。 (我没有写,但我喜欢)。如果对您没有效果,您也可以说"该死,您真丝!"。但这不太可能,但是我确实将其作为选项提供。 关于LLBLGen,我注意到的唯一不好的事情就是对在数据库/服务器之间进行动态切换的支持。它不支持我想要的功能;也就是说,检测到您检索到的给定实体不存在于您切换到的新数据库中的能力。但这是一种罕见的情况。 我建议使用LLBLGen,因为遇到它时我正在编写自己的OR / M。从不回头。 |