假设您所在的IT商店不允许使用任何形式的ORM工具。他们不想买一个,也不能使用开源解决方案。
你会做什么?放弃真正的域模型并以工作表为中心?制作自己的DAL?答案 0 :(得分:12)
严格来说,您的选择是:
否则某种ORM解决方案是不可避免的(即使你自己推出,它仍然是一个简单的ORM层)。
答案 1 :(得分:9)
选项:
答案 2 :(得分:9)
根据您的用户名,我会说“使用LINQ”。它内置于.NET中,它不是ORM(严格来说)。
答案 3 :(得分:6)
如果您真的无法使用现有的ORM之一,那么我建议您不要创建自己的ORM。本地种植的ORM往往是半实施,设计不良,疣状动物,在前六个月似乎有所帮助,然后逐渐成为项目中最大的时间。
如果您应用Fowler的企业应用程序架构模式中的“RowDataGateway”或“TableDataGateway”等模式,则可以不使用ORM。
您仍然会发展自己的隔离层以将您的域与数据库分开,但创建它们并不像滚动自己的ORM那样昂贵。
答案 4 :(得分:5)
这里有三种可能性:
不仅如此,它还是这三件事的组合。他们可能有一些有效的担忧,可以通过更好地理解ORM来治愈。我的建议是尝试在ORM上销售它们。找到一个特别讨厌的代码片段,可以通过使用ORM来修复,并制作一个原型,显示可以简化的代码量。此外,愿意妥协。
如果他们不愿意为此做出让步,你需要问问自己这是否真的是你想要工作的地方。不是因为他们不会让你使用ORM(你可能没有它),但因为他们不会听你的。你不能总是按自己的方式行事,但你应该对开发过程有所了解。
答案 5 :(得分:4)
我会使用Generic DAOs中的某些内容来滚动我自己的DAL来抽象它,以便我的代码的其余部分没有紧密耦合,但是我正在获取数据。
如果它们稍后出现,可以很容易地将它全部交换到ORM。
答案 6 :(得分:4)
如果关于公司太便宜而无法购买,那么请自行编写,在项目结束时向他们展示您的时间成本。 (我认为他们原则上反对免费替代品)
如果是关于性能的话,你可能需要检查它们是否有意义。
如果他们担心会增加其他开发人员必须学习的复杂性,那么请展示一些使用ORM简化的代码示例。
如果是因为应用程序已经非常“以表为中心”,那么你还必须考虑添加ORM是否会改进或者只是添加许多不必要的映射复杂性。
(哦,请阅读:http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx)
答案 7 :(得分:3)
制作你自己的DAL,就像我们之前做的那样,很久很久以前...... 2004年。
答案 8 :(得分:2)
首先,你绝对不能使用开源软件。
如果你必须自己动手,这不是什么大不了的事。您仍然可以使用域模型。如果您为每条记录建模,则可能会更容易,然后构建域模型以从中加载数据作为中间格式。
答案 9 :(得分:2)
了解他们对iBatis(http://ibatis.apache.org/)的看法,它不是一个ORM,但可以帮助您从数据库查询中获取对象,而不会有难以理解的ORM魔法,但是有很多XML。
他们现在怎么做?
答案 10 :(得分:1)
我会推出自己的解决方案,可能使用某种代码生成工具。如果您将结果(无论是数据引用程序,表格,记录集还是其他)转换为对象,那么就会有一个小的o / r映射器,非常缺乏但仍然......我猜这是一个定义问题。
我的主要目标是避免在我的代码中重复使用CRUD,这需要时间,很无聊并且是缺陷的来源。
如上所述:如果不需要关系数据库,您可以随时使用某个对象数据库。但是,如果你的老板反对orm,他们就不太可能那样做了。
答案 11 :(得分:0)
问为什么ORM不被允许,什么构成ORM,然后从那里决定两种可能性中的一种:
答案 12 :(得分:0)
如果您决定构建我们自己的DAL,Davy Brion有一个非常好的教程。
看看Build Your Own Data Access Layer Series。
答案 13 :(得分:-1)
首先,我会找到“为什么开源ORM不是这样的问题?”这个问题的真实答案。
如果这是因为做出此决定的人 1)对性能减慢的恐惧 - 将证明,它不会有问题。 2)如果是因为担心“我们买不起一个工具,因为系统已经很复杂” - 将解释,为什么ORM会加快我的速度。
我认为其他决策(以表格为中心的编码,自己的DAL) - 并不是很好的解决方案。 我想,如果你不被允许使用ORM来做你的工作 - 我不知道......如果我是你,我会留下这样的项目。
答案 14 :(得分:-4)
“没有任何形式的ORM工具。他们没有 想买一个,你也不能 使用开源解决方案。“
没有任何ORM 或只是开源/ $$$?
有很棒的ORM工具的免费版本: