繁体   English   中英

将 ViewModel object 绑定到数据集

[英]Binding ViewModel object to dataset

我是 MVVM/WPF 的新手,并尝试使用 MVVM 设计模式。 我参考本教程https://www.codeproject.com/Articles/26288/Simplifying-the-WPF-TreeView-by-Using-the-ViewMode来使用 treeview 和数据库。

我知道我可以更改 Treeview 选定的项目并参考它我也可以在数据库中更改。 我不知道使用 treeview 和数据库的正确方法是什么。

例如,我有数据库

 ID Name
 1  A
 2  B

我使用 MVVM 在 treeview 中填充它

 A
 |- B

现在,将节点 B 重命名为 C。 我需要在数据库中搜索 B 的 id 并重命名它。 这是处理我的想法的正确方法还是有更好的方法来实现它?

我知道我们可以像这篇文章一样使用Binding TreeView to DataSet但它不使用 MVVM 并且无法应用 MVVM 的某些功能。

B 应该在一个属于 A 的属性的集合中。因此,一个人 A 有一个 children 集合,而 B 的一个实例在该集合中。

然后,分层数据模板将为您提供 B 作为 A 的子级。

当您将 A 重命名为 AA 或其他任何名称时,B 仍在该子集合中。 无需更改任何内容。

尽管您可以使用数据集来访问数据,但我认为实体框架会更简单。 EF 可以为您提供已经在必要的层次结构中排列的数据 - 具有子属性。 相反,数据集具有您需要使用的关系并自己构建集合。

以下是自引用键的示例:

https://www.sqlservertutorial.net/sql-server-basics/sql-server-self-join/#:~:text=SQL%20Server%20self%20join%20syntax&text=It%20is%20useful%20for%20querying,同%20table%20within%20the%20query

在那篇文章中,每个员工都有一个员工 ID。 经理 ID 引用员工经理的员工 ID。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM