gpt4 book ai didi

.net - MVVM With EF, DataAccess 设计题

转载 作者:行者123 更新时间:2023-12-03 10:51:15 26 4
gpt4 key购买 nike

首先也是最重要的。对不起我的英语,我还在学习:)

我目前正在与 MVVM 模型搏斗。

  • 在底部,我有一个数据库。
  • 最重要的是我的 DAL,它基本上是 ADO.NET Entity Framework 。 *请注意,不同的实体也是我的业务对象(因为我在其中包含验证)。
  • 最重要的是,我有存储库类,它们定义了应用程序中所需的不同查询。
  • 当然,除此之外,我还得到了界面、其他组件和单元测试之类的东西,但我认为这并不重要。

  • 情况如下(抽象地):在存储库模式之上,有一个工作人员执行各种任务。接下来是一个显示这些不同任务状态的界面。 (每个任务都包含大量子任务)。界面和工作人员共享相同的任务存储库!

    现在我想要实现的是:工作人员可能会打开(或扩展)一个任务,处理它的所有子任务。有时,用户可能会在界面中展开任务以查看所有子任务。当然,一旦调度程序处理了这些子任务,就会很高兴看到这些子任务正在更新。然而,默认情况下,我不想在未处理或显示时将子任务加载到内存中。因此,子任务应按需加载。

    现在我的问题是,当其中一个消费者为任务的子任务打开存储库时,与其他消费者共享它的最佳方式是什么(这是必需的,因为存储库会在事情发生变化时引发事件)? (例如,如何与接口(interface)共享工作人员创建的存储库)。

    最值得注意的是,您会说它将成为 Task 实体的属性,但由于 Task 实体被用作业务对象,因此它不应该了解底层数据源(在本例中为 EF 模型)或存储库层在它之上。

    另一种选择是创建将 LoadChildTasks 方法添加到任务存储库,但这意味着我必须在内部保留一个集合,并且在调用加载时,检查之前是否没有为指定的任务创建 SubTaskRepository。这也意味着当接口(interface)和工作人员都将他们的操作放在任务列表上时,需要手动释放它,否则它将被内部列表保存在内存中。

    最佳答案

    我们将存储库类设为单例类。因此它将在整个应用程序中共享。
    希望这会有所帮助。

    关于.net - MVVM With EF, DataAccess 设计题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2097228/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com