标签: dto

4
推荐指数
1
解决办法
2285
查看次数

VS2010中跨多个Web服务的通用DTO

我有一组共享通用DTO模型的WCF Web服务.

问题是,当我在Visual Studio 2010中添加服务引用时,为每个Web服务生成的代理都有自己的命名空间(解决方案的内部),这意味着我在每个服务引用上基本上都有重复的DTO.

有没有一种干净的方法可以克服这个并分享dto,而不是在整个服务组中创建一个外观?

干杯.

c# wcf web-services dto visual-studio-2010

4
推荐指数
1
解决办法
629
查看次数

CQRS 中的实体与 DTO

在一个普通的 DDD 项目中,我希望从存储库中检索到的实体作为 DTO 从域层发送到应用层。

CQRS 存在的原因之一似乎是应用层所需的查询(主要是读取操作)与域层所需的查询不同。所以看起来即使是同一个对象的查询结果在不同层之间也可能不同。

在我的域层中,我已经将查询结果映射到域实体中。我对一些 CQRS 示例将查询结果直接映射到 DTO 跳过它们的匹配实体感到困惑。

假设一个数据库返回:

{"person": {
  "id:": 5323423,
  "name": "John",
  "family_name": "Smith"
  ...
}}
Run Code Online (Sandbox Code Playgroud)

但是实体布局将family name映射为surname

class Person
{
   Identity id;
   String name;
   String surname;
}
Run Code Online (Sandbox Code Playgroud)

如果在我看到的某些 CQRS 示例中发生这种情况,则提取的 DTO 看起来会有所不同,从而在将实体与其 DTO 进行匹配时会导致冲突。这些冲突如何解决?在我看来,任何 DTO(与实体相关)都应始终从其实体生成。然而,在这种情况下,在应用层中执行不同类型查询的自由会丢失。

entity design-patterns domain-driven-design dto cqrs

4
推荐指数
2
解决办法
8882
查看次数

将Expression <Func>映射到另一个Expression <Func>中的DTO类

我正在使用Entity Framework Code First并尝试从我的实体类映射到我的DTO类.但我很难搞清楚如何编写Selector.

在这个小例子中,我创建了一个Person类和一个Address类.

在DTO类中,我创建了一个Selector,它从我的Entity映射到我的DTO,但是不能在PersonDto.Selector中使用AddressDto.Selector吗?

public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public Address Address { get; set; }
    }

    public class Address
    {
        public int Id { get; set; }
        public string Street { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试将其映射到DTO类.

    public class PersonDto
        {
            public static Expression<Func<Person, PersonDto>> Selector = 
            entity => new PersonDto
                {
                     Id = entity.Id,
                     Name = entity.Name,
                     Address = ??? AddressDTO.Selector
                };

            public int …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework dto

4
推荐指数
1
解决办法
2100
查看次数

Breeze.js混合DTO和实体

在Ward的文章" The Breeze Server:Have it your way "中:

典型的业务应用程序至少有200个域模型类型.我通过网络发送的数据形状的90%以上与我的业务模型中的实体形状相同.
...
当客户端实体的形状与服务器端业务实体的形状不一致时,我可能会针对该特定情况切换到DTO.

对于我们的应用而言,这可以直接敲击头部,但是为DTO 切换一些实体的最佳方法是什么?

例如,我们的用户实体包含不应向客户端公开的敏感属性.它还具有从其他系统中提取并返回到客户端的相关数据,理想情况下,这些数据应该是客户端User对象的额外属性.用户似乎是切换到DTO的理想候选者.

如果用户是一个孤立的实体,这可能会更容易,但问题是用户基本上在模型中的任何地方被引用.例如,几乎每个实体都有一个CreatedBy属性.

有没有办法在模型中的任何位置切换用户DTO的用户实体?对于模型中引用用户的所有其他实体,我们仍然需要能够在扩展其用户属性的情况下加载它们,在这些用户属性上查询它们,并通过对这些用户属性的更改来保存它们.

除了构建与实体模型95%相同的大型DTO模型之外,我不确定如何做到这一点,并且在它们之间有一些映射代码/框架.但是,正如沃德在这篇文章中所说的那样,"我不喜欢每种类型的DTO;这种过度杀伤可能会破坏生产力."

entity-framework dto breeze

4
推荐指数
1
解决办法
1157
查看次数

具有@ManyToOne关系的QueryDSL投影

我正在使用OpenJPA和QueryDSL,我试图通过使用QueryDSL的bean投影功能来避免操作Tuple对象.我有例如这两个实体,具有@ManyToOne关系.

@Entity
public class Folder {
    private Long id;
    private String name;
    private String path;
    @ManyToOne
    @JoinColumn(name = "FK_FILE_ID")
    private File file;
}

@Entity
public class File {
    private Long id;
    private String fileName;
}
Run Code Online (Sandbox Code Playgroud)

当我执行此查询时:

List<Folder> listFolders = query.from(folder)
.list(Projections.bean(Folder.class, folder.name, folder.file.fileName));
Run Code Online (Sandbox Code Playgroud)

我有一个错误,说Folder对象不包含fileName属性.

我理解QueryDSL正在做什么,因为它是一个简单的"平面"投影,但我想知道是否可以用查询找到的值填充我的folder.file对象的fileName属性.

注意:我知道我可以为我的Folder类定义构造函数并使用此方法:

query.list(ConstructorExpression.create(Folder.class, folder.name,
folder.file.fileName));
Run Code Online (Sandbox Code Playgroud)

但是如果可能的话我想避免这种情况,因为它迫使我在我的投影中为我想要的字段的N组合定义N构造函数.

jpa projection dto openjpa querydsl

4
推荐指数
1
解决办法
3926
查看次数

DTO vs VM - 使用还是不使用?

在 asp.net (webapi+mvc) 项目中,我有许多 dto 作为我的 BLL 的公共接口。此外,我的大多数视图模型都与适当的 dtos 相同。

聪明的书告诉我们,我们必须分离这种模型,但在项目中我看不到这种解决方案的好处。只有数百个无用的代码,其中包含许多愚蠢的错误。

那么 - 在可能的情况下使用 DTO 作为视图模型是否正确?该解决方案的正面和负面影响是什么?

c# asp.net-mvc dto viewmodel asp.net-web-api

4
推荐指数
1
解决办法
2815
查看次数

数据传输对象DTO在何处构建

试图重构一些代码.我看到一些创建DTO对象的类正在服务层中传递,后来由@RestController返回.据我所知,最好只在控制器中构建数据传输对象并将它们传递给视图,尤其是当我们使用WrapperDTO<T>get和set值之类的东西时.当我们使用复杂对象或简单数据类型构建WrapperDTO时,可能存在差异.所有的oppinions将非常感激.

java spring spring-mvc dto

4
推荐指数
2
解决办法
4122
查看次数

如何将对象列表(DTO)作为单个IN参数传递给存储过程

我想在参数中传递Dto并在spring jdbc中调用存储过程.这有可能,这样做吗?

我想用patometer中的dto调用存储过程而不是设置参数?因为我有大量的参数.

mysql stored-procedures dto spring-jdbc

4
推荐指数
1
解决办法
3724
查看次数

如何同时使用 DTO 和 ViewModel?或者这是不可能的?

注意:我的问题是在 .NET/C# 项目中使用 DTO、ViewModel。

我知道 DTO、ViewModel、模型。他们有特定的目的。我们使用 DTO 传输数据,使用 ViewModel 向最终用户显示数据。但是我对将它们全部一起使用感到困惑。我做了很多谷歌搜索,但没有找到如何一起使用它们的完整教程。

我不确定它们是否可以一起使用,或者它们必须用于特定目的,例如对于常规 MVC,我们可以使用 ViewModel,对于 WebAPI,我们将使用 DTO。

任何人都可以解释使用它们的方式,或者任何将它们集中在一起使用的链接表示赞赏。

.net asp.net-mvc dto viewmodel asp.net-web-api

4
推荐指数
1
解决办法
4737
查看次数