Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何加载数据库更改? 我正在使用EntityFramework5和SQLServer2008R2 我还实现了存储库模式 这是一个桌面应用程序_C#_.net_Entity Framework_.net 4.0_Entity Framework 5 - Fatal编程技术网

C# 如何加载数据库更改? 我正在使用EntityFramework5和SQLServer2008R2 我还实现了存储库模式 这是一个桌面应用程序

C# 如何加载数据库更改? 我正在使用EntityFramework5和SQLServer2008R2 我还实现了存储库模式 这是一个桌面应用程序,c#,.net,entity-framework,.net-4.0,entity-framework-5,C#,.net,Entity Framework,.net 4.0,Entity Framework 5,除了一个“小”细节外,我的系统运行良好。 当两个或多个用户正在使用应用程序时,其中一个用户更改了数据,而另一个用户如果不离开并重新进入应用程序,则看不到数据。 我在这里得到了拉迪斯拉夫的答案: 它成功了。唯一的问题是,对于每个集合,我要确保它是更新的,我必须硬编码它 尽管它有效,我还是忍不住想,一定有更好的办法。 我不认为Entity Framework不知道数据库何时更改,需要重新检索数据 那么,我做错了什么 这就是我目前正在做的: public class MyAppContext : Db

除了一个“小”细节外,我的系统运行良好。 当两个或多个用户正在使用应用程序时,其中一个用户更改了数据,而另一个用户如果不离开并重新进入应用程序,则看不到数据。 我在这里得到了拉迪斯拉夫的答案:

它成功了。唯一的问题是,对于每个集合,我要确保它是更新的,我必须硬编码它

尽管它有效,我还是忍不住想,一定有更好的办法。 我不认为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;
    ...
}
公共类MyAppContext:DbContext
{
//DbSet声明
}
公共类上下文:IDisposable
{
私有只读MyAppContext ctx;
私人词典库;
私有静态上下文实例;
公共静态上下文实例
{
得到
{
if(实例==null)
实例=新上下文();
返回实例;
}
}
...
}
//然后每个存储库都可以访问上下文
公共抽象类存储库:IRepository
T:在哪里上课
{
受保护的只读MyAppContext ctx;
...
}
如您所见,我使用“singleton”模式访问上下文并避免双重上下文异常


有什么想法吗?

你可以用它来获得通知@Blam这是唯一的方法吗?这不能通过EntityFramework完成吗?谢谢