首页 / 知识
关于c#:ORM的良好功能
2023-04-14 14:31:00
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。从不回头。 |
最新内容
相关内容
开发linux命令工具?
开发linux命令工具?,系统,工具,环境,状态,平台,设计,数据,电脑,中小企业,标准,Linux界面开发工具有哪些?1、大多数Linux发放版本,自身捆绑了诸linux命令测试客户端?
linux命令测试客户端?,地址,系统,网络,工具,工作,分析,环境,命令,下行,资料,linux测试网速的工具1、speedtest-cli是一个用Python编写的轻量级linux命令创建项目组?
linux命令创建项目组?,管理,密码,项目,命令,系统,位置,文件,用户组,用户,文件夹,linux命令中用root用户新建一个user1用户,新建一个group1的组linux命令联想工具?
linux命令联想工具?,地址,工作,系统,工具,状态,标准,信息,命令,目录,左下角,Linux:Python编写Linux自定义命令工具首先我们先认识一下cat指令复制项目的linux命令?
复制项目的linux命令?,系统,项目,文件,命令,目录,源文件,语法,选项,目标,功能,在Linux操作系统中复制文件或目录时使用的命令是()。1、在Linuxlinux命令项目部署?
linux命令项目部署?,项目,服务,环境,软件,系统,代理,管理,统一,做好,业务,怎么把php部署到apache服务器上linux?1、在linux部署php项目的方法:linux命令工具怎么用?
linux命令工具怎么用?,地址,系统,工作,单位,工具,密码,服务,命令,处分,基础,怎样在Win10中使用Linux命令推荐:win10系统下载中文具体如下:首先,点linux部署项目的命令?
linux部署项目的命令?,项目,系统,设备,环境,工作,基础,传播,信息,标准,代码,Linux部署springBoot项目并且查看控制台日志指定路径:如下: /data/wlinux项目常用命令?
linux项目常用命令?,工作,地址,系统,信息,管理,项目,命令,目录,标准,网络,linux常用的20个命令系统管理相关命令:df、top、free、quota、at、lplinux项目更新命令?
linux项目更新命令?,系统,信息,网络,地址,网站,通信,管理,时间,项目,命令,linux必学的60条命令是什么?压缩和解压缩:tar:打包或解包文件。gzip:压启动项目命令linux?
启动项目命令linux?,工作,经理,产品,技术,地址,数字,系统,项目,命令,信息,怎么在linux启动的时候执行一个命令?1、在启动时执行 Linux 脚本 有linux命令行截图工具?
linux命令行截图工具?,工具,电脑,软件,系统,截图,网站,工作,环境,暂停,命令,Linux图形化界面下使用命令进行截图的方法1、以前在LINUX里面截图