【发布时间】:2014-05-14 15:45:56
【问题描述】:
我无法从根本上理解如何在实体框架中管理一对多关系。在我的应用程序中,我有两个表,DISPLAY_MASTER 和 DISPLAY_ITEMS。他们的关系是这样的:
DISPLAY_MASTER.DISPLAY_ID 1----->* DISPLAY_ITEMS.DISPLAY_ID
Entity Framework 非常直观地组织了这一点。我留下了一个强类型 DISPLAY_MASTER 对象,它有一个名为 DISPLAY_ITEMS 的 ICollection 属性。
我的困惑在于如何将DISPLAY_ITEMS 集合保存回数据库。在我的应用程序中,我正在使用 LINQ 将特定 DISPLAY_MASTER 的所有 DISPLAY_ITEMS 读取到名为 _displayItems 的 List<DISPLAY_ITEMS> 对象中。然后将其绑定到 DataGrid 以使用 MVVM 进行编辑。用户可以编辑现有的DISPLAY_ITEMS,删除现有的DISPLAY_ITEMS,或使用DataGrid 添加新的DISPLAY_ITEMS。我的绑定工作完美,这些更改反映在_displayItems 中。一旦到了保存时间,我就不再对自己的代码充满信心了。当用户点击保存时,我正在设置DISPLAY_MASTER 的ICollection,如下所示:
_displayMaster.DISPLAY_ITEMS = _displayItems;
这是处理实体框架集合的正确方法吗?还是应该将DataGrid 直接绑定到_displayMaster.DISPLAY_ITEMS 对象?还是别的什么方法?我不自信的原因是,如果我尝试使用以下方法验证 _displayMaster.DISPLAY_ITEMS 实体:
DbEntityValidationResult validationResults = _context.Entry(_displayMaster.DISPLAY_ITEMS).GetValidationResult();
我收到一条错误消息,提示“List1”不是集合的一部分,这显然不正确。
任何建议或指导将不胜感激。
谢谢。
【问题讨论】:
标签: c# wpf entity-framework entity-framework-5 one-to-many