gpt4 book ai didi

entity-framework - 使用 Entity Framework 时,我应该使用部分类作为业务层吗?

转载 作者:行者123 更新时间:2023-12-04 08:34:39 25 4
gpt4 key购买 nike

我正在使用 Entity Framework 进行项目。使用EF生成类的部分类作为业务层可以吗?我开始认为这就是 EF 的用途。

我曾尝试使用 DTO 模式,但很快意识到我只是在创建一堆映射类,这会重复我的工作,也是需要更多维护工作和附加层的原因。

我想使用自跟踪实体并将 EF 实体传递给所有层。请分享您的想法和想法。谢谢

最佳答案

我查看了使用部分类,发现将数据库模型暴露给 UI 层会受到限制。

有几个原因:

  • 创建的实体模型包括一个深度关系对象模型,根据您的架构,该模型将暴露给 UI 层(比如 MVP 的演示者或 MVVM 中的 ViewModel)。
  • 业务逻辑层通常会公开您可以对其进行编码的操作。如果您在 BLL 上看到一个保存方法并查看执行保存所需的参数并看到一个模型需要构建其他实体(由于实体模型的关系性质)只是为了执行保存,则它没有保持操作简单。
  • 如果您有一堆 Web 服务,那么将需要发送额外的数据而没有明显的 yield 。
  • 您可以为您的操作参数创建更多不可变的 DTO,而不是遇到副作用,因为在应用程序的其他部分修改了相同的实例。
  • 如果您执行 TDD 并遵循 YAGNI,那么您将倾向于拥有一个专门为您正在编写的操作设计的结构,这将更容易构建测试(不需要创建其他与测试无关的对象,因为它们在模型)。在这种情况下,您可能...
    public class Order
    { ...
    public Guid CustomerID { get; set; }
    ... }

  • 而不是使用由 EF 生成的具有公开引用的实体模型......
    public class Order
    { ...
    public Customer Customer { get; set; }
    ... }

    这样,只有接受订单的操作才需要客户的 id。为什么你需要构建一个 Customer (以及可能的其他对象)用于与接受订单有关的操作?

    如果您担心重复和映射,请查看 Automapper

    关于entity-framework - 使用 Entity Framework 时,我应该使用部分类作为业务层吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2940190/

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