我有一个自引用表结构,与 EF 一起工作得很好,我用它来渲染树视图。EF 实体如下所示,我急切地加载了整个结构。
class ListItem
{
int Id;
string Text;
ListItem ParentItem;
IList<ListItem> ChildItems;
}
然后我在 UI 上添加了将新子节点添加到任何节点并使用 jQuery 重新排列节点的功能。更新后的结构使用相同的实体存储在会话中。
当我想使用 EF 将其保存回来时,我遇到了问题,因为我将它保存在另一个实体中,如下所示,并且MainEntity
每当我想更新树时,我都会保存(更新)它。
class MainEntity
{
..
..
IList<ListItem> Tree;
}
如何使用会话中的值更新此 Tree 属性并告诉 EF 保存它?如何更改该结构的父母和孩子以匹配新结构?
我正在考虑使用命令模式来记录 UI 的每个操作,并稍后在保存时在 EF 实体上重播它们。但这看起来有点矫枉过正:(