Entity Framework 4.1 的Local().ToBindingList(),之后如何筛选?

quou2002 2011-09-23 12:43:11
类型:WinForm
模型:Customer --> Order
使用DataBase First ,自动生成模型(其中Customer下的Order集合为ICollection<Order>)
现在欲实现orderBindingSouce对应1个DataGridView的显示,并双向绑定。

Customer customer1 ; //已准备好的Customer对象
context.Order.Load(); //载入所有Order表中的数据

//此时可以双向绑定所有order显示,但我需要的是前面customer1对象下的所有orders
orderBindingSource.DataSource = context.Order.Local().ToBindingList();

//直接如下绑定,无法双向绑定,且无法新增(Fix Size)
orderBindingSource.DataSource = customer1.Orders;

//如下绑定,显示是正确的,但无法双向绑定
orderBindingSource.DataSource = context.Order.Local().Where(m=>m.CustomerID == customer1.ID);

尝试设置
orderBindingSource.Filter = string.Format("CustomerID = '{0}'",customer1.ID)
也不行。
目前仅想到一种‘变通’的办法绕过去:每次Load前清空本地相关Order数据,筛选放在Load时做,这样Local查询的所有结果就是需要的了。

特征询求解:用了Local().ToBindingList()之后,如何实现筛选?
...全文
86 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shupo 2011-09-27
up once !
回复
quou2002 2011-09-26
up once !
回复
quou2002 2011-09-23
@fangxinggood 你好,链接文章是针对EF4.0 的。
在EF4.0 中,
通过对象服务,您可以将控件(如 ComboBox、ListView 和 DataGridView 控件)绑定到 EntityCollection 或执行 ObjectQuery 时所返回的 ObjectResult。这两个实体框架类都实现用于数据绑定的 IListSource 接口。所有实体对象都派生自 StructuralObject 基类,该基类实现 INotifyPropertyChanged。这样便可在对象属性和控件之间实现双向数据绑定,从而将对控件的更新传播回绑定对象的属性。 - - MSDN

我询问的是EF4.1中,针对Local().ToBindingList()的用法。
同样表示感谢。
回复
发动态
发帖子
.NET Framework
创建于2007-09-28

1.7w+

社区成员

.NET技术 .NET Framework
申请成为版主
社区公告
暂无公告