ORM 有何伟大之处?

2023-12-30

所以我的头靠在墙上,希望有人能来帮忙,要么把墙移走,要么阻止我的头移动!

在过去的 3/4 周中,我一直在调查 ORM 是否为新项目做好了准备。 ORM 必须映射到现有的大型且老化的 SQL 数据库。

所以我尝试了亚音速。我真的很喜欢 v2 和 v3,经过修改后可以与 VB 很好地配合,并且 SQL 中的命名模式运行正常。然而,它缺乏单独的实体属性名称与列名称的灵活性,这让我抓狂(对不起,罗布)。

我尝试过实体框架,但我发现它和其他框架一样在某些方面有所欠缺。

因此,我硬着头皮尝试了 nHibernate,但大约一周后,它按照我喜欢的方式工作(在 Codesmith 的帮助下为我生成类/hbms),我对启动所需的时间感到沮丧(构建配置对象) ,尽管尝试了一些技巧来减少这个时间。

我本质上是在构建一个可以在应用程序和网站之间共享的 DAL 类之后。我是不是找错了树?对于具有 100 个表的遗留项目,我应该返回 ado.net 并使用 DTO 吗?啊啊!

很抱歉问题的粗暴风格。我的头发不多了,我想保留我拥有的!!

预先感谢,艾德

附言。我应该补充一点,我非常了解 SQL,并且不害怕自己动手编写快速查询。如果有的话我不需要对 SQL 隐藏


ORM 让您:

  1. 将表行映射到对象,这是面向对象编程的可行部分。
  2. 自动浏览对象关系
  3. 轻松添加、编辑和删除表格行
  4. 以更直观的方式查询数据库,因为您不必考虑连接(这取决于 ORM 和查询方法)
  5. 透明地处理 L1 和 L2 缓存。

如果您不使用 ORM,则以上所有内容都必须手动处理。

PS:我同意 Dmitry 关于 NHibernate 启动时间的看法(参见问题评论)。另外,你尝试过吗流畅的NHibernate http://fluentnhibernate.org/? Fluent NHibernate 非常简单。当我第一次映射数据库时,我简直不敢相信自己的眼睛。它甚至比 DevExpress XPO 等专有 ORM 更容易。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ORM 有何伟大之处? 的相关文章

  • 使用包含空值列的 WHERE 子句的更新语句

    我正在使用另一个表中的数据更新一个表上的列 这WHERE子句基于多个列 并且某些列为空 根据我的想法 这个空值是什么throwing off你的标准UPDATE TABLE SET X Y WHERE A B陈述 See 这个 SQL 小提
  • 与 FOREIGN KEY 约束冲突

    我有两张桌子 学术界 CREATE TABLE dbo R ACADEMIE ID ACADEMIE dbo IDENTIFIANT NOT NULL LC ACADEMIE CODE dbo LIBELLE COURT NOT NULL
  • 如何在构建持续时间和 RAM 使用方面优化 gradle 构建性能?

    我目前正在为我的多模块 Web 应用程序从 ant 切换到 gradle 目前看来当前版本的 Gradle M9 可能已经达到了极限 但也许 希望 这只是我对 Gradle 概念理解不够好或者不知道 神奇的性能提升开关 的问题 我很高兴收到
  • 我们是否需要使用 MappedByteBuffer.force() 将数据刷新到磁盘?

    我正在使用 MappedByteBuffer 来加速文件读 写操作 我的问题如下 我不确定是否需要使用 force 方法将内容刷新到磁盘 似乎没有 force getInt 仍然可以完美工作 好吧 因为这是一个内存映射缓冲区 我假设 get
  • MySQL 中的 UDF 性能

    我注意到 当查询在 SELECT 或 WHERE 子句中调用 UDF 时 MySQL 查询执行时间的性能会呈指数级下降 有问题的 UDF 查询本地表以返回标量值 因此它们不仅执行算术表达式 而且充当相关子查询 我通过简单地删除 UDF 并使
  • 更新每组单行

    的背景 我有一个临时表 其中包含唯一的 rowID OrderNumber 和 guestCount 等信息 RowID 和 OrderNumber 已存在于该表中 并且我正在运行一个新查询来填充每个 orderNumber 缺少的 gue
  • 使用 xmlagg 时出现子查询错误和太多值

    我在连接许多大型表中的所有数据时遇到问题 我昨天对此提出了问题 但不幸的是 listagg 似乎不是一个好的选择 链接子查询返回多行 https stackoverflow com questions 54651144 subquery r
  • 在 Golang 中生成固定长度的随机十六进制字符串的有效方法?

    我需要生成很多固定长度的随机十六进制字符串 我找到这个解决方案golang中如何生成固定长度的随机字符串 https stackoverflow com a 31832326 710955 我正在做这样的事情 const letterByt
  • 将所有奇数位置的元素移动到左半部分,将偶数位置的元素移动到右半部分

    给定一个包含正整数和负整数的数组 将所有奇数索引元素移动到左侧 将偶数索引元素移动到右侧 问题的难点是在维持秩序的同时就地做 e g 7 5 6 3 8 4 2 1 输出应该是 5 3 4 1 7 6 8 2 如果顺序不重要 我们可以使用快
  • 部署 dacpac 所需的权限

    我正在尝试使用 sqlpackage exe 在租户上部署 dacpac 目前 我正在向将部署此功能的帐户授予 SysAdmin 或 db owner 权限 并且它工作正常 但在生产中 如果目标租户数据库属于其他应用程序 我可能无法获得这些
  • 循环中的递归算法复杂度(运行时间)

    我想了解您对如何检测以下递归算法的 T n 运行时间 的意见 Charm 是一种用于发现事务数据库中频繁闭项集的算法 频繁闭项集列表是在一组交易 tids 中多次出现的频繁项 例如面包和牛奶是经常一起购买的物品 它们是通过将索引为 i 的当
  • 更快地评估从右到左的矩阵乘法

    我注意到以二次形式评估矩阵运算右到左明显快于左到右在 R 中 取决于括号的放置方式 显然它们都执行相同的计算量 我想知道为什么会这样 这与内存分配有什么关系吗 A 5000 5000 B 5000 2 A matrix runif 5000
  • 计算树中值的总和(递归查询)

    我在表员工 id name parentid 中有树结构 并且该表可以嵌套 employees 与另一个具有列 id employeeid quantity 的 Sales 表是一对多关系 每个员工都有销售数量 我想计算每个员工以及儿童员工
  • 有人真正有效地实现了斐波那契堆吗?

    你们中有人曾经实施过斐波那契堆 http en wikipedia org wiki Fibonacci heap 几年前我就这样做了 但它比使用基于数组的 BinHeaps 慢了几个数量级 当时 我认为这是一个宝贵的教训 告诉我们研究并不
  • Mysql 在给定日期时间范围内插入随机日期时间

    使用 SQL 我可以在给出范围的列中插入随机日期时间值吗 例如 给定一个范围2010 04 30 14 53 27 to 2012 04 30 14 53 27 我对范围部分感到困惑 因为我刚刚做了这个 INSERT INTO someta
  • 使用 LIMIT/OFFSET 运行查询并获取总行数

    出于分页目的 我需要使用以下命令运行查询LIMIT and OFFSET条款 但我还需要计算该查询将返回的行数 而不需要LIMIT and OFFSET条款 我想运行 SELECT FROM table WHERE whatever ORD
  • Breeze + NHibernate 多对一关系,避免指定关系键

    以下多对一映射正在运行 取自 NorthBreeze public partial class UserRole public virtual long ID get set public virtual long UserId get s
  • 如何在没有聚合函数的情况下在sql server中创建枢轴查询

    我正在使用 MS SQL SERVER 2008 并且有以下数据 select from account PERIOD ACCOUNT VALUE 2000 Asset 205 2000 Equity 365 2000 Profit 524
  • Hibernate3:自引用对象

    需要一些帮助来了解如何执行此操作 我将在文件系统上运行递归 查找 并且希望将信息保留在单个数据库表中 具有自引用的层次结构 这是我想要填充的数据库表结构 目录对象表 id int NOT NULL name varchar 255 NOT
  • 实验室数据与 Google Page Insight 的起源摘要之间的混淆

    任何知道 Core web Vitals 详细信息的人请帮我解决一些问题 How 起源总结与实验室数据不同吗 Speed Insight 如何获取起源摘要 这是同一页面或相似页面最近 28 天的总评分吗 我检查了具有相同内容的网站类别页面L

随机推荐

  • jQuery(或者可能是浏览器)是破坏缓存的ajax加载脚本

    我正在通过加载视图页面 ajax 使用 jQuery 调用 我明确将 缓存 选项设置为 true 我们在应用程序中没有任何地方使用 ajaxSetup 否则指定 这是 ajax 请求设置 viewDialogLink click funct
  • Chart.js - 如何在图表中间添加文本?

    我正在使用 Chart js 创建此折线图 但我需要标记区域 如下所示 有任何想法吗 您扩展您使用的图表 然后使用辅助方法编写标签 HTML
  • 如何转义 fopen 的 url

    看起来 fopen 无法打开带有空格的文件 例如 url http gatewaypeople com images articles cntrbutnssttmnts12 main 616x200 jpg fopen url r 返回 f
  • Jenkins作业运行系统Groovy脚本如何响应用户kill

    我有一个长时间运行的 System Groovy 脚本 它启动了数以万计的其他构建 为了不使构建队列过长 导致 UI 无法使用 它监视构建队列的长度 如果构建队列长于给定阈值 它将不会启动任何新构建并休眠一分钟 问题是 该脚本不响应用户终止
  • 使用 GTK 和 c++ 播放音频文件

    我目前正在使用 gtk 和 C 代码构建一个非常简单的音乐播放器 但现在我无法弄清楚如何使用 C 代码打开和播放音频文件 include
  • 添加苹果图标到网站

    我已经使用 Woorank 测试了我的网站 并显示了有关缺少 Apple 图标的警告 我已经搜索过 但我不确定如何包含这个图标 我找到了这段代码
  • “新”表达式中的大括号? (例如“new MyClass() { ... }”)

    大括号在那里做什么 handler1 new Handler public void handleMessage object new Class Name 这种语法只存在于 Android 或 Java 上吗 那么它在 Java 中又叫什
  • 使用 HttpWebRequest.BeginGetResponse 实现超时的最佳方法

    HttpWebRequest BeginGetResponse 不尊重 HttpWebRequest 的任何超时属性 Timeout 或 ReadWriteTimeout 我阅读了一些方法来获得相同的结果 但我不知道这是否是最好的方法 以及
  • Flutter 中的错误“主体可能正常完成,导致返回‘null’,但返回类型”

    这个问题在这里已经有答案了 在我的代码中 打开此页面然后调用获取数据 initState fetch 中的方法每 15 秒调用一次数据方法 初始化状态 Timer timer Future
  • 我应该使用什么纯 Python 库来抓取网站?

    我目前有一些 Ruby 代码用于抓取一些网站 我使用 Ruby 是因为当时我在一个网站上使用 Ruby on Rails 这很有意义 现在我正尝试将其移植到 Google App Engine 但一直陷入困境 我已将 Python Mech
  • 无法将 SQL 插入到一个特定表中

    所以在过去的三个小时里我一直在尝试将 sql 插入到这个特定的表中 我想我开始发疯了 我已经隔离了我认为可能是问题的事情 但如果您想了解更多信息 请随时询问 本质上我目前有两个 sql 表 concepts and FUideas 我对此感
  • 访问 Xamarin.iOS Settings.Bundle?

    我已经尝试了很长一段时间来寻找一个应该非常简单的问题的解决方案 我想要的是在应用程序未运行时可以在 iPhone 设置菜单中编辑的变量 基本上是一个包含在 iOS GUI 中的配置文件 这应该是iOS中的内置功能 虽然我可以找到一些与之相关
  • UISegmentedcontrol 在 UITabbarcontroller 中切换视图

    我正在尝试使用在多个不同视图之间切换UISegmentedControl 我找到了一个非常好的例子来做到这一点 http redartisan com 2010 6 27 uisegmented control view switching
  • Visual Studio 监视窗口中的“非公共成员”节点显示什么?

    我假设 C 对象的所有非公共 即私有 受保护 内部和内部受保护 成员都位于 非公众会员 当我在 Visual Studio 观察窗口中查看对象时 但是随后 我注意到以下代码存在异常 class HashDerived System Secu
  • jQuery 中窗口和文档的区别

    我想知道两者之间有什么区别document window在 jQuery 中 这两个经常被使用 但我一直不明白它们之间的区别 唷 这实际上是一个比您想象的要大得多的问题 The 极短的答案是 The window对象代表容器document
  • MySQL 错误 1005:无法创建表(错误号:150)

    我正在尝试创建下表 create table messaInScena data date ora time spazio varchar 20 spettacolo varchar 40 postiDisponibili smallint
  • 我应该从 MooTools 转换为 jQuery 吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 服务器无法验证请求。确保授权标头的值格式正确,包括签名

    我注意到我的计算机时区设置为 UTC 08 00 Pacific Time US Canada 所以我把它改为 UTC 08 00 Kuala Lumpur Singapore 然后当我打开 Azure 存储资源管理器时 它显示以下错误 我
  • 确定焦点事件:单击或制表符

    如果焦点是在单击事件或 tabstop 上触发的 如何确定 jQuery 上的焦点事件 我有这个焦点事件 如果焦点是由制表符触发的 我将执行某些操作 如果是单击 我将不会执行它 这是一个伪代码 a focus function if Thi
  • ORM 有何伟大之处?

    所以我的头靠在墙上 希望有人能来帮忙 要么把墙移走 要么阻止我的头移动 在过去的 3 4 周中 我一直在调查 ORM 是否为新项目做好了准备 ORM 必须映射到现有的大型且老化的 SQL 数据库 所以我尝试了亚音速 我真的很喜欢 v2 和