我之前将此问题发布为:Multiple ViewModels request same domain object, should I give them the same/different instance(s)?
在我对此做了一些研究之后,我意识到我之前的问题太混乱了,所以我发布了这个新问题。
假设我想构建一个WPF桌面应用程序来管理10亿人的信息。它只有一个最终用户(我),所有数据都存储在我的本地机器(SQL Server / MySQL)中。我将使用Visual Studio,Autofac,NHibernate,并尝试实现MVVM,DI,DDD模式。
同一个人可以同时在UI中的任何位置显示:在多个窗口,选项卡,列表,组合框,文本块...每个列表可以包含几千人,整个应用程序可以有10~100个列表。并且列表的内容(人员)经常更新:每次我更改列表的设置时,列表都会清空,然后再填充另外几千个新人。
问题是:如果我在一个列表中修改某个人(例如更改名称),如何将更改应用到所有其他列表?
我认为有两种方法可以解决这个问题:
答案 0 :(得分:2)
不要跨会话共享实体实例,也不要将单个会话用于桌面应用程序。
由于通常 ViewModels是单独业务对话的一部分,因此每个VM可能只有一个会话。
每个ViewModel都应该注册它接受的事件,并负责发布它生成的事件。另一种方法是在服务/业务层级发布。您需要了解最适合您的架构的内容。