【问题标题】:An ORM Without Session没有会话的 ORM
【发布时间】:2011-05-09 14:36:17
【问题描述】:

我与 NHibernate、XPO、SubSonic、DataObject.net 合作。但是正如您所知,所有这些 ORM 都需要在编程块中打开和关闭会话, 从软件工程方面来看,在业务逻辑层和 UI 层使用数据库会话不是正确的方式。所以我打算将我的 ORM 更改为在我的应用程序的每个部分中都不需要 Session 或 unitofwork 的东西。

你有什么建议吗?

另外,我尝试了 EF4 POCO,但它有一些问题,我还找不到论坛/支持中心来问我的问题!


问题是我认为在 UI 和 Logic 的上层,我不应该将我的代码涉及到会话创建和处理中。我希望 ORM 透明地工作。特别是 XPO 迫使我大量使用 UI 表单中的会话!我不认为这是正确的方式

【问题讨论】:

  • 如果所有类库都有相似的编程范式和对你的期望,你似乎更可能误解了如何使用这些库,但你发现它们都是“不正确的方式。”
  • 我不太同意——例如,工作单元可以从 UI 的上下文中很好地定义。例如,单个屏幕或工作流可以与单个工作单元相关联。

标签: .net


【解决方案1】:

事实上,几乎每个 ORM 都依赖于模型之间的某种连接和某种数据库会话。我认为 EF4 的最前沿已经在独立方面取得了一些进展(我认为他们称它们为对象优先实体,但我不确定)。他们的自我跟踪实体是一个开始,但他们依靠序列化或操作来开始跟踪。

问题在于 OO 实体和关系数据库之间存在“阻抗不匹配”,如果不认真工作就无法克服。您几乎可以完全分离您的关注点,但您会失去效率。您可以非常高效,但您始终意识到您正在处理数据库。

解决方案是没有解决方案,您需要接受这一点。尽可能最好和适当地处理它,但忘记你可以完全抽象出你的数据库的想法。就目前的技术而言,这是不切实际或不可能的。

【讨论】:

    猜你喜欢
    • 2012-08-16
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 2016-07-02
    • 2010-11-30
    • 2011-04-10
    • 2011-04-14
    • 2012-08-20
    相关资源
    最近更新 更多