gpt4 book ai didi

.net - 遗留数据库上的 NHibernate

转载 作者:太空狗 更新时间:2023-10-30 01:47:02 24 4
gpt4 key购买 nike

我很惭愧地说出来,但我不得不说。我没有使用过 ORM。我真的在考虑 NHibernate,因为它似乎是最成熟的 .Net 产品(如果我错了,请纠正我)。现在,问题是我们有一个以 SqlServer 作为主要集成点的大型电子商务/预订系统,在存储过程中包含相当多的业务逻辑。现在 - 显然 - 这种架构是我们想要摆脱的东西,我们已经逐步这样做了一段时间。所以,我真正的问题是开始使用 NHibernate 来获得新功能而不回头映射所有遗留内容是否可行?这种逐步引入和支持ORM的方式,如果支持,你会推荐吗?

最佳答案

如果您使用的是遗留数据库,您会发现 ORM 工具很难使用、配置、维护和优化。当我们使用 NHibernate 将我们的域模型映射到现有数据库时,我们遇到了很多问题。其中一些是:

  1. 模型对象很难映射到现有表(我们有超过 100 个表),NHibernate 的一些要求非常突兀,比如每个表都必须有一个 ID 字段才能映射到域对象.此外,映射多对多关系非常难以掌握和使用。

  2. 保持大量映射 XML 需要映射到遗留数据库成为全职开发人员的工作并且相当具有挑战性,特别是在一个团队中10 多名开发人员。

  3. 随着复杂性的增加,我们的查询性能下降,因为数据模型和对象模型并不总是与业务相匹配,需要不断调整。需要编写大量的数据聚合代码。例如,如果我们需要显示一个连接多个表格的网格,我们过去必须加载多个域对象,将它们放在一起并在一个网格中显示它们。该代码很难维护和调试。

  4. 此外,有时我们不得不运行匿名查询,即我们只需要某些对象的一些属性,而不是整个对象。这真的很难编写、维护甚至实现,并且有悖于 ORM 范式,但我们别无选择,只能这样做。

  5. 我们遇到的另一个问题是数据库不断变化,因为 DBA 会重构表,这总是会破坏我们的领域对象。这是一项让模型和表格保持同步并确保应用程序仍然有效的练习。

长话短说...我们了解到,如果有一种方法可以将业务所需的 SQL 直接映射到我们的 UI 模型或域对象,而无需担心配置,那将是一个更好的解决方案。

在经历了这段经历之后,我们开发了 Orasis Mapping Studio。它是专门设计用于处理遗留数据库以及现有 .NET 模型/域对象的映射工具。它接受您的 SQL 查询,并允许您通过以图形方式显示查询和对象的元数据并使用拖放来创建对象属性和查询列之间的映射,将它们映射到现有的 .NET 对象。该工具会自动生成执行映射以读取对象所需的所有 ADO.NET 代码。然后,您可以在 DAL 层中使用生成的代码或使用生成的程序集来检索和保存数据。

您可以在这里尝试:Orasis Mapping Studio .这是我们认为开发人员真正需要的工具,特别是用于处理遗留数据库以及性能是关键要求的地方。它是由开发人员为开发人员编写的,因此它处理了一些复杂的细节,如对象继承、嵌套对象、数据类型转换等。祝你好运!

关于.net - 遗留数据库上的 NHibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/481397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com