当前位置: 首页 > 知识库问答 >
问题:

DTO 和实体的接口和方法

桂高昂
2023-03-14

如果我有实体类

public class BarcodeSetting
{
   string Prefix {get;set;}
   string RangeStart {get;set;}
   string RangeEnd {get;set;}
}

和一个DTO

public class BarcodeSettingDTO
{
   string Prefix {get;set;}
   string RangeStart {get;set;}
   string RangeEnd {get;set;}
}

>

  • 我的问题是我应该在客户端中使用条形码设置DTO(赢形)吗?或创建另一个类,如条形码设置视图模型

    如果我想要一个方法IsBarcodeValid

    public bool IsBarcodeValid(BarcodeSettingDTO dto, string barcode)
    {
       // return true if barocode is in BarcodeSettingDTO range
       // return false
    }
    

    我应该把它放在哪里(作为静态的辅助方法,还是放在BarcodeSetting DTO里面)?我以前认为IsBarcodeValid应该是BarcodeSting里面的方法,但是贫血模型不允许有任何方法。

  • 共有2个答案

    范飞翰
    2023-03-14

    1.我的问题是,我应该在客户端(winform)中使用BarcodeSettingsDTO吗?或者创建另一个类,如BarcodeSettingsViewModel

    ==

    2.IsBarCodeValid:我应该把它放在哪里(作为静态的助手方法,或者放在BarcodeSettingsDTO中)?

    ==

    3.如果我有一个实体的多个DTO(在不同的应用程序中)。如何重用一些方法

    ==

    BarcodeSettingAnotherDTO extends BarcodeSettingDTO
    
    白淇
    2023-03-14

    Dto只是用于在层之间传输数据,因此在引用验证或业务逻辑时添加一些特定的行为是它的责任。尝试将验证和业务规则集中到业务规则验证器类或富实体类中。

     类似资料:
    • 问题内容: 我们将使用DTO在表示层之间来回发送数据。我们有像这样的图层: facade appService domain 并且我们使用推土机来帮助我们将实体转换为dto。但是我现在有两个问题: 从实体到dto,我们可以使用推土机,但是从dto到实体,我们可以使用推土机吗?如果是,如何? 我应该在哪里创建实体?在外观或DTOAssembler中? 例如,我必须注册一本书。这本书的实体外观如下:

    • 我试图在我的项目中巧妙地使用DTO和实体,但它似乎比它应该的更复杂。我正在构建一个管理库存的后端,我使用NestJs和TypeOrm。 我的客户向我发送了一组数据抛出POST请求,比如: 我的控制器有责任通过使用自定义ValidationPipe检查字段: 我在许多地方读到,在最佳实践中,原始数据应该转换为DTO,当涉及到数据插入时,我应该将DTO转换为类型化实体。 我同意这种方法,但我发现它非常

    • 问题内容: 我是Go语言的新手,具有C#背景并且对如何构造Go应用程序感到困惑。 假设我正在构建一个REST API,它将位于数据库之上。还要说,即使完成后,鉴于业务的变迁等,此应用程序可能仍需要频繁更改。 在带有诸如Entity Framework和DTO之类的工具的C#中,我通过从控制器给出的结果中抽象出数据库来缓解此问题。如果更改数据库中一堆字段的名称,则可能必须更改数据库访问逻辑,但是希望

    • 我需要一种标准方法来比较JPA实体与其DTO并确定它们是否代表相同的业务对象。我可以想到三种方法,每个DTO上的自定义方法,带有静态方法的接口或比较器。 基于若昂·迪亚斯的回答,方法4-继承。 优点/缺点 方法1-一路坏 方法2-使用接口支持组合而不是继承,但需要使用自定义方法名称的语义学() 方法3-不需要修改源代码 方法4-简化语义学,因为它使用标准但需要“样板 这些方法的任何其他优缺点或对其

    • 我目前正在开发一个大型web应用程序,主要包含一个Angular SPA和一个可以访问后端层的OData WebAPI 我们处于早期阶段,已经开始实现第一个类,包括一个