首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectQuery<T>或IQueryable<T>

ObjectQuery<T>或IQueryable<T>
EN

Stack Overflow用户
提问于 2010-11-26 00:28:44
回答 1查看 2.5K关注 0票数 2

我使用ObjectQuery作为我的winforms应用程序中几个BindingSources的数据源。问题是我习惯了Linq like查询,所以我使用它们来定义数据源:

代码语言:javascript
复制
View.DsMyDataSource = (from p in ModelContext.GetContext.MyObject 
                       where p.Deleted == false  p) as ObjectQuery<MyObject>;

ModelContext.GetContext()返回我的modelContext实体的单例。

这是一种好的方式吗?我担心使用LINQ like查询可能会因为强制转换而丢失一些东西。

有没有其他方法可以使用LINQ语法获取ObjectQuery类型?

谢谢你的任何提示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-29 07:28:38

实际上ObjectQuery<T>实现了IQueryable<T>,所以没有真正的区别。

我建议不要绑定到IQueryable,因为这给了UI太多的权力。IQueryable的目的是将查询的执行推迟到较晚的时间点(例如BLL、服务层),但是呈现IMO为时已晚。

当我说为时已晚时,我的意思是,当查询到达UI时,不应该再对数据库进行查询。但是,如果UI开始执行.Count().Sum()等操作,则会执行两个查询。使得处理数据上下文变得非常困难。

我的建议是,返回一个具体的集合:例如ICollection<T>,并绑定到该集合。

如果你需要做像分页这样的事情,那就通过LINQ .Skip().Take()来做。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4279113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档