【发布时间】:2015-01-20 16:59:18
【问题描述】:
在我们的项目中我们正在使用
- 实体框架
- 存储库模式 + 工作单元模式一起
- 我们正在使用 DevExpress 控件。
在开始时,在 Gosha 的建议下,我现在使用 LIST(感谢 gosha),我将代码更新为 BINDINGLIST 初始化我们的网格的相关代码部分是:
// New repository instance by UOW (unit of work)
repXtraGridAddXtraEditor = new RepositoryObject.DesignLayer.XtraGridViewAddXtraEditorRep(UOW, true);
// new bindinglist and fill it
blAddXtraGridEditor = new BindingList<BusinessObject.DesignLayer.XtraGridViewAddXtraGridEditor>(repXtraGridAddXtraEditor.Query(t => t.XtraGridViewId == XtraGridViewId).ToList());
// BindingSource bsource to be filled by blAddXtraGridEditor
bSource = new BindingSource(); // { DataSource = XtraGridViewXtraGridEditorList};
bSource.DataSource = blAddXtraGridEditor;
// PASS İT TO GRID
grdXtraGridAddXtraEditor.DataSource = bSource;
现在
- 网格 > grdXtraGridAddXtraEditor
- BindingSource> bSource
- BindingList> blAddXtraGridEditor
are AWARE OF EACH OTHER,这意味着当我们从网格中删除一条记录时,它也会从 Bindingsource 和 bindinglist 中删除
当我们从网格中删除一行时
// Delete from grid ( from screen)
gvwXtraGridAddXtraEditor.DeleteRow(gvwXtraGridAddXtraEditor.FocusedRowHandle);
//reflect changes to DB
UOW.Db.SaveChanges(); // WHICH MAKES NOTHING :)
其他对将更改保存到 Db 的结果没有影响的代码:
bSource.EndEdit();
blAddXtraGridEditor.ResetBindings();
bSource.ResetBindings(false);
UOW.Db.SaveChanges();
删除不会反映到 EntityFramework(and or UOW)
换句话说,网格和实体框架不知道对方。
- 我有什么遗漏吗?
- 有更好的选择吗?
提前谢谢大家
【问题讨论】:
标签: c# winforms data-binding devexpress