希望有人可以指出如何做到这一点:
我有一个使用实体框架的 WinForms 应用程序。例如,我们通过提供 BindingList 的存储库将数据绑定到 gridControl。
例如(简化代码)
class ProductRepository {
public void LoadAll() {
_context.Products.Where(p => p.Deleted == false).Load();
}
public BindingList<T> GetBindingList() {
LoadAll();
return _context.Products.Local.ToBindingList();
}
}
class ProductListPresenter {
private void SetList() {
_view.SetList(productRepo.GetBindingList());
}
}
class ProductListView {
DeletedButton.Click += {
(bindingSource1.Current as Product).Deleted = 1;
gridControl1.Refresh();
};
}
但是:我只想显示未删除的产品(Product.Deleted == false)。可以在 Repository Load() 方法中过滤它,但是当我已经将它绑定到我的控件时如何过滤它?我不能做 bindingSource1.RemoveCurrent() 因为它会完全擦除实体并将其标记为 State.Deleted..
这里要考虑的另一件事是:我还有其他一些事情正在以这种形式进行,只有当用户决定通过单击“保存”按钮来保存更改时,我才需要在数据库中提交的所有更改。在用户明确保存更改之前,我必须使用内存状态。
有什么建议么?在 WinForms 中使用 EF 不知何故开始提高挫败感。