繁体   English   中英

如何通过PRESENTER将数据从数据库传输到VIEW?

[英]How to transfer the data from Data Base to VIEW via PRESENTER?

我正在尝试创建使用WinForms实现MVP模式的应用程序。

其中我也使用EF + CodeFirst + Linq。

VIEW上DataGridView控件,需要填充数据。 VIEW调用PRESENTER类的方法SELECT() ,后者又调用MODEL类的方法SELECT()

如何通过PRESENTER将数据从数据库传输到VIEW

我正在尝试使用return但是因为我正在使用USING块,所以它不起作用。

internal void Select()
{
    using (GoodsContext context = new GoodsContext())
    {
        var items = from Items in context.Goods
                    select Items;
    }
}

非常有趣的问题。 当然,可以实现查询并将其返回为IEnumerable ,但是我想知道以什么方式将其返回为IQueryable ,以允许进一步的过滤/排序等。我看到的唯一方法是处理DbContext (显然返回queryable一直引用它),但是安全吗? 然后,我在Google上搜索了一下,发现是否总是需要在DbContext对象上调用Dispose()? 不行 对我来说,内部的解释听起来很合理,并且我们已经有一个不应该Dispose的可抛弃对象( Task )。

不久,您可以删除using语句并返回IQueryable

您应该将方法Select类型从void SelectIEnumerable<Good> ,以便能够返回某些内容。 还可以使用.ToList将结果.ToList List

internal IEnumerable<Good> Select()
{
    using (GoodsContext context = new GoodsContext())
    {
        var items = (from Items in context.Goods
                     select Items).ToList();
        return items;
    }
}

Select方法的返回类型更改为List<Good>
然后将结果“物化”到数据列表中,您将不必依赖于DataContext

internal List<Good> Select()
{
    using (GoodsContext context = new GoodsContext())
    {
        return context.Goods.Select(items => items).ToList();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM