entity-framework - 有没有办法在不处理和重新实例化 DbContext 的情况下重置它?

标签 entity-framework entity-framework-4 entity-framework-4.1

我最近重构了一个 WPF 应用程序,使其不再将 DbContext 的每次使用都包装在 using 中。子句(见 this question)。相反,我的应用程序始终使用相同的 DbContext 单例。

除了一个小问题外,这很好用。我有一个从头开始重建数据库并插入一些默认数据的例程。此例程直接使用 ADO.NET(不是 DbContext),因此 DbContext 不知道数据库现在完全不同。

有没有一种方法可以在不处理 DbContext 的情况下重置它?如果可能,我想避免处理,因为这会破坏整个应用程序中对原始单例的多个引用。

最佳答案

Entity Framework Core 5.0 现在有一个 ChangeTracker.Clear()执行此操作的方法。如 the documentation 中所述,最好还是创建和处理DbContext根据需要提供实例,但有时这是不切实际的。

DbContext is designed to have a short lifetime where a new instance is created for each unit-of-work. This manner means all tracked entities are discarded when the context is disposed at the end of each unit-of-work. However, clearing all tracked entities using this method may be useful in situations where creating a new context instance is not practical.

关于entity-framework - 有没有办法在不处理和重新实例化 DbContext 的情况下重置它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5643610/

相关文章:

c# - 如何根据条件将数据绑定(bind)到 DTO 属性?

entity-framework - Entity Framework 标量函数映射

sql - Linq to SQL Group by 和 Sum in Select

ASP.NET MVC 3、Entity Framework 4。更新与许多相关的实体

sql-server-2008 - EF 4.0 Guid或Int作为主键

visual-studio-2010 - 具有 Table-per-Type 继承的 Entity Framework 模型

entity-framework-4.1 - 用EF代码优先枚举-将DB播种然后使用的标准方法?

c# - 无法从 'System.Data.Objects.ObjectParameter' 转换为 'System.Data.Entity.Core.Objects.ObjectParameter'

.net - EF4 和代码优先方法

c# - 如何重写查询表达式以用整数替换枚举?