gpt4 book ai didi

asp.net-mvc - 关注点分离存储库模式和 Entity Framework 3.5

转载 作者:行者123 更新时间:2023-12-04 16:03:10 25 4
gpt4 key购买 nike

我正在努力成为一个更好的开发者......

我正在使用的内容:

  • .Net MVC 框架 1.0
  • Entity Framework 3.5

  • 我一直在阅读,我想我想做的是:
  • 为域中的每个聚合创建一个存储库。例如,订单存储库将管理订单的 OrderItems。
  • 创建一个服务层来处理业务逻辑。每个存储库都会有一个具有相似方法的相应服务对象。
  • 在存储库和服务之间创建 DTO
  • 可能创建 ViewModels,它们是 View 使用的类。

  • 我有一个基本存储库接口(interface),我的聚合存储库接口(interface)将实现...
    public interface IRepository<T>
    {
    IEnumerable<T> ListAll();
    T GetById(int id);
    bool Add(T entity);
    bool Remove(T entity);
    }

    我的 Order Repository 接口(interface)定义如下……随着我对这个学习练习的深入了解,可能会有其他方法。
    public interface IOrderRepository : IRepository<Order>
    {
    }

    我的服务类与存储库的定义基本相同,只是每个服务实现都包含业务逻辑。这些服务将在构造函数中采用存储库接口(interface)(我还没有准备好在这个练习中使用 IoC,但相信这就是我想要结束的地方)。
  • 存储库实现将使用 Entity Framework 从数据库中推送和拉取。检索数据时;这些方法将只返回 DTO 而不是 EF 生成的对象
  • 服务(正如我所说的那样)将控制存储库并执行业务逻辑。这些服务就是您将在 Controller 中看到的,即 _orderService.GetById(1)。
  • 这是我开始翻转并可以使用一些反馈的地方......我应该让我的服务类填充 ViewModel 类......我应该没有 ViewModel 类......也许从一种类型到另一种类型的映射过多?

  • 我很想就我在关注点分离方面的前进方向得到一些反馈。

    谢谢

    最佳答案

    我认为您正朝着关于存储库模式的正确方向前进。关于您关于 ViewModel 类的问题,我建议您使用将业务服务方法输出的输出转换为某些所需输出的东西。例如,您的 Order 业务服务可能有一个名为 GetOrders() 的方法。 .使用自定义属性,您可以为其定义 View 类类型。 View 能够获取此方法的输出,可能将其与其他类型的数据连接起来,并将结果作为具有匿名类型的对象集合返回。在这种情况下, View 将采用 IQueryable<Order>IEnumerable<Order>作为输入并返回 IList作为输出。

    当您需要在客户端显示不同类型的数据 View 时,此方法将极大地帮助您。我们已经在我们公司的框架中使用了与此方法类似(但更复杂)的东西。

    关于asp.net-mvc - 关注点分离存储库模式和 Entity Framework 3.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1780932/

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