【问题标题】:Refresh ObjectContext or recreate it to reflect changes made to the database?刷新 ObjectContext 或重新创建它以反映对数据库所做的更改?
【发布时间】:2010-07-21 09:58:29
【问题描述】:

我有一个向数据库公开操作和从数据库公开操作的 Web 服务。我正在为 DAL 使用实体框架 4。

我想知道处理进出数据库的操作的最佳方式是什么。 最好不要让 ObjectContext 的实例保持活动状态,而是为对数据库执行的每个操作创建一个实例?这似乎是一种非常糟糕的处理方式,但我想不出另一种方法来跟上对数据库所做的更改。

如果我保持相同的上下文处于活动状态,它如何知道数据何时被修改?我知道在查询数据库时,ObjectContext 只是通过检查主键字段来检查记录是否已添加或删除(我是否正确?)。在这种情况下,我必须明确告诉它刷新特定对象,这不是很实用。

我正在考虑使用时间戳列的解决方案,并且 objectcontext 检查该列是否有更改。如果该列被修改,它会刷新数据。 这样的解决方案是在 Entity Framework 4 中构建的吗?或者是否有人对我如何始终从数据库中获取最新数据而不为每个请求重新创建 ObjectContext 有任何其他建议?

【问题讨论】:

    标签: .net entity-framework objectcontext


    【解决方案1】:

    ObjectContext 旨在用作工作单元,因此您为每个业务事务创建一个,然后将其处理掉。

    EF - and repository pattern - multiple contexts

    【讨论】:

    • 我实际上是在 ObjectContext 上使用存储库模式,但我认为 UnitOfWork 实现仅意味着您只在最后保存更改,在这种情况下通过调用 SaveChanges 方法。我不知道 UnitOfWork 模式指定对象必须在完成工作后被释放。
    猜你喜欢
    • 1970-01-01
    • 2014-03-10
    • 2013-08-22
    • 2019-05-06
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    相关资源
    最近更新 更多