EntityFramework与Sql Server数据库同步上下文

时间:2018-11-20 12:13:45

标签: c# entity-framework synchronization dbcontext

我目前正在开发一个多用户wpf应用程序。 首先,我想简要介绍一下该系统。 每个客户端都从sql服务器数据库中加载全部数据。每个客户端可以创建和修改属于他的数据。来自其他客户端的数据无法修改。 我现在想做的是,同步我的数据库(寿命长->只要MainWindow运行,上下文会一直存在)dbcontext,这意味着当其他客户端在数据库中写入/更新数据时,该数据应同步到每个dbcontext,这意味着每个客户端可以查看所有其他客户端的数据,但不允许修改/删除它们(每个记录都包含用户字段)

现在最大的问题是,我如何才能实现长期存在的dbcontext的同步? 是否有任何一种同步框架(我已经找到了Microsoft同步框架,但是我认为该解决方案不适合我的问题。)我正在寻找一种方法来同步整个dbcontext(所有实体)。我是否需要编写自己的同步文件,例如轮询数据库?

好吧,我找到了一种使用以下代码刷新dbcontext中首先加载的所有实体的方法:

 var refreshableObjects = Remoting.Context.ChangeTracker.Entries().Select(c => c.Entity).ToList();
        Remoting.Context.ObjectContext.Refresh(System.Data.Entity.Core.Objects.RefreshMode.StoreWins, refreshableObjects);

现在,这只会刷新现有的实体。没别的, 我如何获取数据库中所有新添加的记录并将它们添加到我的上下文中。 有没有一种方法可以重新执行我的linq查询并合并结果?

我正在使用Entityframework代码优先方法。

谢谢, 玛尼

0 个答案:

没有答案