ORM对长期运行环境有很好的支持

时间:2009-05-21 18:07:59

标签: .net orm

相关问题here

对于大多数ORM,当您对现有上下文运行查询时,它不会返回自首次从数据库返回对象以来已更改的数据。它向DB发出查询,但不会返回对DB所做的任何更改,因为上下文不想踩踏您的对象(有关Linq to SQL中此行为的讨论,请参阅here)。这适用于使用工作单元模式的短期上下文,但如果使用长期上下文则不太好。

我已经尝试过Linq to SQL和Entity Framework,两个框架都提供了一个刷新方法,允许你指定一个枚举参数来覆盖上下文中的现有对象,但这不会获取新记录(至少没有其他查询)更重要的是,不会删除已从DB中删除的记录的对象。

我知道我可以丢弃上下文和现有对象,但我不想这样做,因为对象绑定到应用程序中的其他元素。

是否有任何ORM能够使用DB的最新数据刷新对象,为新创建的对象添加对象并删除已从DB中删除的记录的对象,理想情况是以有效的方式(即使用MS SQL rowversion列。)

2 个答案:

答案 0 :(得分:1)

我不确定,但似乎你需要类似于DataObjects.Net行为的东西。它们的实体是长期存在的会话绑定对象,用于以事务状态存储数据。当您打开新事务并读取现有对象的持久属性时,它们会自动从数据库中获取它(它还涉及EntitySet属性)。

当然,您应该为每个事务执行复杂查询,以使查询结果保持实际状态,但我认为它可以很容易地自动化。

答案 1 :(得分:0)

检查此ORM:“http://entityorm.uuuq.com

您在网站上:

  • 基本示例如何运作;
  • pdf手册中的完整文档和示例;
  • 论坛;
  • 支持的数据库(无限制,因为您可以创建您的驱动程序)。