标签: dto-mapping

推土机替代bean映射?

我试图找出一种简单的方法来将DTO映射到没有样板代码的实体.虽然我在考虑使用dozer,但似乎需要大量的xml配置.有没有人看过使用DSL在纯Java中配置bean映射的推土机替代方案?

理想情况下,我希望找到一个受Guice做事方式启发的bean映射器.

dto-mapping guice dto dozer

21
推荐指数
2
解决办法
3万
查看次数

关于如何从域(ORM)对象映射到数据传输对象(DTO)的建议

我正在使用的当前系统利用Castle Activerecord在Domain对象和数据库之间提供ORM(对象关系映射).这一切都很好,在大多数情况下实际上运作良好!

问题出在Castle Activerecords支持异步执行,更具体地说是管理对象所属会话的SessionScope.长话短说,坏事发生了!

因此,我们正在寻找一种方法来轻松转换(自动思考)从Domain对象(谁知道数据库存在和关心)到DTO对象(谁对DB一无所知,不关心会话,映射属性或所有事物) ORM).

有没有人有这样做的建议.首先,我正在寻找对象的基本一对一映射.域对象Person将被映射为PersonDTO.我不想手动这样做,因为它是浪费.

很明显,人们会想到反思,但我希望在这个网站周围有一些更好的IT知识 可以提出"更酷".

哦,我正在使用C#,ORM对象在使用Castle ActiveRecord映射之前说过.


示例代码:

通过@ ajmastrean的请求,我已经链接到一个我(非常)嘲弄在一起的例子.该示例具有捕获表单,捕获表单控制器,对象,activerecord 存储库异步帮助程序.它有点大(3MB),因为我包含了运行它所需的ActiveRecored dll.您需要在本地计算机上创建一个名为ActiveRecordAsync的数据库,或者只需更改.config文件.

示例的基本细节:

捕获表格

捕获表单引用了控制器

private CompanyCaptureController MyController { get; set; } 
Run Code Online (Sandbox Code Playgroud)

在表单的初始化时,它调用MyController.Load()private void InitForm(){MyController = new CompanyCaptureController(this); MyController.Load(); 这将返回一个名为LoadComplete()的方法

public void LoadCompleted (Company loadCompany)
{
    _context.Post(delegate
    {
         CurrentItem = loadCompany;
         bindingSource.DataSource = CurrentItem;
         bindingSource.ResetCurrentItem();
         //TOTO: This line will thow the exception since the session scope used …
Run Code Online (Sandbox Code Playgroud)

c# orm castle-activerecord dto-mapping

13
推荐指数
1
解决办法
3076
查看次数

将问题与Linq To SQL和DTO分开

我最近开始了一个新的webforms项目,并决定将业务类与任何DBML引用分开.我的业务层类代替访问离散的数据层方法,并且是DTO的返回集合.因此,数据层可能会像以下一样投影DTO:

(from c in dataContext.Customers
where c.Active == true 
select new DTO.Customer
{
   CustomerID = c.CustomerID,
   Name = c.CustomerName,
   ...
}).ToList()
Run Code Online (Sandbox Code Playgroud)

虽然构建DTO对象会增加工作量,但这对于业务和数据层之间的紧密绑定感觉更好,这意味着我可以在没有数据库存在的情况下测试业务层.

我的问题是,这是一个好的做法吗?有没有办法生成DTO(可能通过SQLMetal),以及随着项目的进展可能会遇到的其他问题.

c# linq dto-mapping

11
推荐指数
1
解决办法
2857
查看次数

从DTO转换为实体和实体到DTO的简便方法?

我最近参与了几个分布式客户端/服务器项目,我们经常遇到的一个痛点是将DTO对象转换为我们的实体,反之亦然.我想知道是否有人对这个时间下沉有一个"简单"的解决方案?

我想到的一件事就是使用反射来进行某种翻译......我想你必须确保你的属性名称在线的两侧完全相同 - 但看起来它可能会起作用.

只是想找到一种方法来避免一些时间沉入我的开发中.

谢谢!!

serialization translation web-services dto-mapping

10
推荐指数
1
解决办法
4009
查看次数

如何通过使用 -MapStruct 从源对象复制值来填充目标对象内的地图?

我是 Mapstruct 的新手。我有一个场景,在我的目标对象中,我有一个带有键值对 <String,String> 的 java 映射,我必须使用源对象内部对象属性/数据成员值填充这个映射。

我的代码类似于波纹管(虚拟代码):

public class Student {
    public String name;
    public String rollNo;
    public Map<String, String> marks;
}


public class ExamResult{

    public String stud_name;
    public String Stud_rollNo;
    public Marks marks;
}

public class Marks{
    public Integer English;
    public Integer Maths;
    public Integer Science;
}
Run Code Online (Sandbox Code Playgroud)

我将如何手动实现与波纹管相同的事情:

Student target;
ExamResult source;
target.setName(source.stud_name);
target.setRollNo(source.Stud_RollNo);
target.marks.put("ENGLISH",source.marks.english_marks);
target.marks.put("MATHS",source.marks.math_marks);
target.marks.put("SCIENCE",source.marks.science_marks);
Run Code Online (Sandbox Code Playgroud)

对于直接属性映射,我找到了代码,但不确定如何映射要在marks映射中填充的值。

我曾考虑使用 java 表达式来填充目标映射值,但没有找到任何文档或用于目标对象的表达式示例。

我想像下面这样使用,但不确定它会起作用:

    @Mapping(source = "stud_name", target = "name")
    @Mapping(source = "Stud_RollNo", target = "rollNo")
    @Mapping(source = …
Run Code Online (Sandbox Code Playgroud)

java dto-mapping mapstruct

8
推荐指数
2
解决办法
643
查看次数

AutoMapper问题

试图自动化一些对象.
源对象在名称之前具有_的属性,目标对象 - 没有.是否可以实现一个地图创建,即automapper会将所有_properties映射到
所有源类型的属性.

class MyMapper<TFrom, TTo>{
    TTo PerformMap(TFrom fromObject){
        Mapper.CreateMap<From, To>(); // ???
        TTo result = Mapper.Map<From, To>(fromObject);
        //result.Id.ShouldBe(value from TFrom._Id);
        return result;
    }
}

class From
{
    public int _Id { get; set; }
    public string _Name { get; set; }
}

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

asp.net dto-mapping

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