查询嵌套的图像时,Rx扩展名tobservable()会产生例外



我只是想对使用EF和RX感到满意。不幸的是,我遇到了一个无法解决的问题。我有一个称为world.sql的MySQL的测试数据库。EF产生以下

public worldEntities()
        : base("name=worldEntities")
    {
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }
    public virtual DbSet<city> city { get; set; }
    public virtual DbSet<country> country { get; set; }
    public virtual DbSet<countrylanguage> countrylanguage { get; set; }

我现在正在尝试比较"简单"RX提供的LINQ查询和TOOBSERVABLE()替代方案。使用LINQ I具有以下查询,该查询有效:

var m = new worldEntities();
        var res = m.country.Where(e => e.countrylanguage.Any(i=>i.Language.Equals("German"))).Select(e => e.Name);

但是,我无法弄清楚Rx对应物。如果我尝试使用相同的方法

var set = m.country.ToObservable();
        set.Where(e => e.countrylanguage.Any(i => i.Language.Equals("German")))
            .Select(e => e.Name).Buffer(50).
            Subscribe(l=>
            Items.AddRange(l));

我将获得以下内部消息的例外:

{"There is already an open DataReader associated with this Connection which must be closed first."}

所以我的问题是,RX查询应该如何实现相同的结果。

提前感谢和善意。

可能会起作用:

    var set = m
.country
.Where(e => e.countrylanguage.Any(i => i.Language.Equals("German")))
.Select(e => e.Name)
.ToObservable();
            set.Buffer(50).
                Subscribe(l=>
                Items.AddRange(l));

但是,它是Rx扩展的非常不寻常的应用,绝对不是"舒适"的最佳应用。

数据库是基于拉的系统。您请求从数据库中获取数据。RX是关于处理推送的问题,而不是拉力要求。这不是Rx的好用途。

如果您想学习RX,请开始将其用于事件处理。

相关内容

  • 没有找到相关文章

最新更新