C# 将ViewModel对象绑定到数据集

C# 将ViewModel对象绑定到数据集,c#,wpf,mvvm,treeview,C#,Wpf,Mvvm,Treeview,我是MVVM/WPF的新手,尝试使用MVVM设计模式。我参考本教程来使用treeview和数据库 我知道我可以更改Treeview所选项目并在其上引用,我也可以在数据库中更改。我不知道这是不是使用treeview和数据库的正确方法 例如,我有一个数据库 ID Name 1 A 2 B 我使用MVVM在treeview中填充它 A |- B 现在,当将节点B重命名为C时,我需要在数据库中搜索B的id并将其重命名。这是实现我的想法的正确方法还是有更好的方法 我知道我们可以像本文一样

我是MVVM/WPF的新手,尝试使用MVVM设计模式。我参考本教程来使用treeview和数据库

我知道我可以更改Treeview所选项目并在其上引用,我也可以在数据库中更改。我不知道这是不是使用treeview和数据库的正确方法

例如,我有一个数据库

 ID Name
 1  A
 2  B
我使用MVVM在treeview中填充它

 A
 |- B
现在,当将节点B重命名为C时,我需要在数据库中搜索B的id并将其重命名。这是实现我的想法的正确方法还是有更好的方法


我知道我们可以像本文一样使用,但它不使用MVVM,并且一些MVVM的功能无法应用。

B应该在一个集合中,该集合是a的属性。因此,一个人a有一个子集合,而B的一个实例在该集合中

然后,分层数据模板会将B作为a的子对象提供给您

当您将A重命名为AA或其他名称时,B仍在该子集合中。 不需要改变任何东西

虽然可以使用数据集访问数据,但我认为实体框架会更简单。EF可以为您提供必要的层次结构中已经安排好的数据-带有子属性。取而代之的是,数据集具有您需要处理的关系,并且您需要自己构建集合

以下是自引用键的示例:

在该文章中,每个员工都有一个员工id。经理id引用员工经理的员工id


在rdbms中处理这种关系的方式通常是使用自引用表。因此,表people将有一个ID。每个条目将有一个ParentID。这应该是一个自动生成的整数。如果您改为使用有意义的键和名称,那么当有人更改名称时,可能结婚或离婚,则外键的值必须更改。通过使用非自然生成的密钥,这是不必要的。

为什么不能在属性中存储每个节点的id?