首先。抱歉我的英语,我还在学习:)
我目前正在与MVVM模型搏斗。
情况如下(摘要):在存储库模式之上,有一个工作人员执行各种任务。接下来是一个界面,显示这些不同任务的状态。 (每个任务包含大量子任务)。接口和worker都共享相同的任务存储库!
现在我想要实现的是:工作人员可以打开(或扩展,如果你愿意)一个任务,处理它的所有子任务。有时,用户可能会在界面中展开查看所有子任务的任务。当然,一旦调度程序处理了子任务,就会很高兴看到子任务更新。然而,默认情况下,我不希望在未处理或显示的情况下将子任务加载到内存中。因此,子任务应按需加载。
现在我的问题是,当其中一个消费者打开任务子任务的存储库时,最好的方式是与其他消费者共享它(这是必需的,因为存储库会在事情发生变化时引发事件)? (例如,如何使用接口共享工作者创建的存储库)。
最值得注意的是,您会说它将成为Task实体的属性,但由于Task实体使用的是业务对象,因此它不应该具有底层数据源(在本例中为EF模型)的知识,或者它上面的Repository层。
另一种选择是创建一个LoadChildTasks方法添加到Tasks存储库,但这意味着我必须在内部保留一个集合,并在调用负载时,检查是否在之前为指定的Task创建了一个SubTaskRepository 。此外,这意味着当接口和工作人员都将其操作放在任务列表上时,需要手动释放它,否则它将由内部列表保存在内存中。
答案 0 :(得分:0)
我们将存储库类设为singleton类。所以它将在整个应用程序中共享。 希望这会有所帮助。 简