- 我正在使用 Entity Framework 5 和 SQL Server 2008 R2。
- 我还实现了存储库模式。
- 这是一个桌面应用程序
我的系统运行良好,除了一个“小”细节。当两个或更多用户正在使用该应用程序时,其中一个人更改了数据,如果他不离开并重新进入该应用程序,另一个人就看不到它。我在这里得到了 Ladislav 的答案:Load changes made in another DbContext
它奏效了。唯一的问题是,对于每个集合,我想确保它已更新,我必须对其进行硬编码。
即使它有效,但我不禁想到必须有更好的方法。我不认为 Entity Framework 不知道数据库何时更改并且需要重新检索数据。
那么,我做错了什么?
到目前为止,这就是我正在做的事情:
public class MyAppContext : DbContext
{
//DbSet<T> declarations
}
public class Context : IDisposable
{
private readonly MyAppContext ctx;
private Dictionary<Type, IRepository> repositories;
private static Context instance;
public static Context Instance
{
get
{
if (instance == null)
instance = new Context();
return instance;
}
}
...
}
// and then each repository have access to the context
public abstract class Repository<T> : IRepository
where T : class
{
protected readonly MyAppContext ctx;
...
}
如您所见,我使用“单例”模式来访问上下文并避免双重上下文异常。
有任何想法吗?