在Rx和EF之间共享过滤器/谓词

时间:2015-10-31 12:59:21

标签: entity-framework linq-to-sql linq-to-entities signalr system.reactive

我希望在Rx和EF之间共享一个谓词,而不会破坏为谓词生成有效SQL代码的能力。 这可能吗?

理想的解决方案需要最少的代码来执行以下所有操作:

  • 获取与实体集
  • 中的过滤器匹配的实体
  • 观察实体集以查找与同一过滤器匹配的更改
  • 重复使用上述
  • 的过滤器代码
  • 在数据库中执行初始过滤器
  • 捕获所有更改(例如Merging historical and live stock price data with Rx

在我的想象中,代码看起来很简单:

public IObservable<Pet> GetAndObserveUserPets(int userId) {
    return EfContext.Pets.AsQueryableObservable().Where(d => d.OwnerId == userId);
}

显然,上述操作中的核心方法AsQueryableObservable()不存在。在实践中,我怀疑可能的软件可能不支持这一点。可能没有办法“同步”使用“LINQ to Observables”(Rx)和LINQ to Entities(或LINQ to SQL)。在检查观察谓词中的相关实体时可能会出现另外的复杂情况,尽管这可能严格地是设计到性能的关注点。

有没有办法做到这一点?

我的目标是构建实时多用户Web界面,显示来自SQL数据库的可编辑信息,并根据可用性或安全性原因进行过滤。我希望使用SignalR。

https://msdn.microsoft.com/en-us/library/hh242971(v=vs.103).aspx

0 个答案:

没有答案