Entity framework 在将实体框架dbset指定为数据源之前对其进行筛选
我希望能够做到下面的评论,但我不知道如何做到这一点。我理解为什么我需要进行加载,然后引用本地可观察集合,并将其设置为BindingList,以便网格中的更改保持同步,但是如何在分配它之前进行我想要进行的过滤呢?现在,我需要在网格中进行过滤,这不是我想要做的Entity framework 在将实体框架dbset指定为数据源之前对其进行筛选,entity-framework,filtering,bindinglist,Entity Framework,Filtering,Bindinglist,我希望能够做到下面的评论,但我不知道如何做到这一点。我理解为什么我需要进行加载,然后引用本地可观察集合,并将其设置为BindingList,以便网格中的更改保持同步,但是如何在分配它之前进行我想要进行的过滤呢?现在,我需要在网格中进行过滤,这不是我想要做的 Core.MyContext.SiteVisits.Load(); var siteVisits = Core.MyContext.SiteVisits.Local.ToBindingList(); //.Where(siteVisit =&
Core.MyContext.SiteVisits.Load();
var siteVisits = Core.MyContext.SiteVisits.Local.ToBindingList();
//.Where(siteVisit => siteVisit.UPC == _site.UPC)
ugSiteVisits.DataSource = siteVisits;
非常感谢您的帮助。不用加载所有的站点访问,只需使用
IQueryable.Load()
查询您想要的站点访问并将它们添加到本地集合中即可
将
移动到加载之前的位置
。嗯,我确实尝试过,当然,它不起作用。IQueryable不支持绑定列表,这正是我的问题。抱歉,您的答案没有信用。请参阅更新以获得答案。David,非常感谢您提供此信息!新的observablecollection方法正是我所缺少的,它在我的程序中起作用。我简直不敢相信没有办法做到这一点,你已经恢复了我对EntityFramework/Linq的信心。该死,看来我需要收回我的荣誉了。我测试了我的应用程序,在dbset中更改了一行字段,效果很好。但是,我在另一个测试中删除了一行,该行在数据库中没有被删除。我现在怀疑AsEnumerable扩展方法没有使observablecollection与EF同步。请帮忙?第二种解决办法有效,第一种不行。再次感谢你的帮助!
Core.MyContext.SiteVisits.Where(siteVisit => siteVisit.UPC == _site.UPC).Load();
ugSiteVisits.DataSource = Core.MyContext.SiteVisits.Local.ToBindingList();