gpt4 book ai didi

c# - ObjectQuery 或 IQueryable

转载 作者:行者123 更新时间:2023-11-30 21:18:23 25 4
gpt4 key购买 nike

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

View.DsMyDataSource = (from p in ModelContext.GetContext.MyObject 
where p.Deleted == false p) as ObjectQuery<MyObject>;

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

这样做的好方法吗?我担心使用 LINQ 之类的查询可能会因为转换而丢失一些东西。

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

感谢任何提示。

最佳答案

其实好吧 ObjectQuery<T> 实现 IQueryable<T> ,所以没有真正的区别。

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

当我说为时已晚时,我的意思是当查询到达 UI 时,不应再对数据库进行查询。但是如果 UI 开始执行诸如 .Count() 之类的操作或 .Sum() ,您执行了 2 个查询。很难处理您的数据上下文。

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

如果您需要执行诸如分页之类的操作,请通过 LINQ 执行此操作 .Skip().Take() .

关于c# - ObjectQuery<T> 或 IQueryable<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4279113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com