但是,我想同时播放数据的多个应用程序(并发版).
我看到一个使用DML触发器的解决方案,但我想知道是否有其他方法来实现,如果是的话,最好的解决方案是使用.
问候,
尼克
编辑
也许我的问题不够清楚,我会尝试以一个例子来说明.
>应用#1正在数据库#1上使用实体框架
>应用#2也在数据库#1上使用实体框架
> Application#1更改由数据库#1的基础表中的更改所反映的实体模型
>我希望应用程序#2得到通知这个更改,以便它可以具有一致/ up2date数据.
解决方法
由于内部实现(IdentityMap,UnitOfWork)长期的生活环境不是一个不错的选择,而且生活环境短,你根本不想提及行为.即使在桌面应用程序中,您应该使用像每个窗体的上下文方法.您加载数据,您向用户提供数据,直到那时只有用户可以修改数据并按下保存按钮 – 应用程序负责处理并发问题(时间戳).作为运行工作单元的一部分的数据的自动修改是非常糟糕的主意 – 如果用户已经修改过的数据怎么办?你会覆盖他的变化吗
编辑:
您可以阅读有关ObjectContext here的更多内容.
我可以想象需要数据更新通知客户端应用程序的场景.它可以是只读实时数据显示 – 例如股票交易信息.但在这种情况下,您需要更强大的东西.客户端调用ORM不是获取数据的场景,而是客户端订阅处理数据检索和快速更改通知的一些服务/中间层的场景.
对于只需要以半实时方式刷新数据的简单方案,您可以使用轮询 – 您的客户端将在几秒钟内再次调用查询并使用StoreWins策略.任何通知策略都在EF的范围之外 – 您必须将其实现为触发器,sql依赖关系,发布订阅模式或其他内容.即使有通知,您只能处理一些事件并重新查询数据.
再次,如果要通过轮询减少数据传输,您需要一些服务/中间层,这将允许某种程度的缓存(您也可以尝试WCF数据服务).