对不起我的英语不好。
我之前将这个问题发布为:多个 ViewModels 请求相同的域对象,我应该给它们相同/不同的实例吗?
在对此进行了一些研究之后,我意识到我以前的问题太混乱了,所以我发布了这个新问题。
假设我想构建一个 WPF 桌面应用程序来管理 10 亿人的信息。它只有一个最终用户(我),所有数据都存储在我的本地机器(SQL Server / MySQL)中。我将使用 Visual Studio、Autofac、NHibernate,并尝试实现 MVVM、DI、DDD 模式。
同一个人可以同时显示在 UI 的任何位置:在多个窗口、选项卡、列表、组合框、文本块中……每个列表可以包含几千个人,整个应用程序可以有 10~100 个列表。并且列表的内容(人)会经常更新:每次我更改列表的设置时,列表都会被清空,然后又会填充数千个新人。
问题是:如果我在一个列表中修改一个人(例如更改姓名),如何将更改应用于所有其他列表?
我认为有两种方法可以解决这个问题:
对于每个人,在整个应用程序中使用一个实例。为了实现这一点,我可以通过应用程序使用单个 UnitOfWork,但似乎这种方法会导致内存泄漏。
为每个人使用多个实例(每个列表一个实例)。为了实现这一点,我认为我应该为每个列表使用一个 UnitOfWork,并且我必须找到一种方法来同步一个人的所有实例。Berryl提到了事件聚合器。但谁负责发布和注册活动?
我在这里发现了一个非常相似的问题,并且还阅读了以下文章,但我仍然感到困惑:
谢谢!