[英]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
Select
为IEnumerable<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.