标签: object-object-mapping

忽略使用Automapper映射一个属性

我正在使用Automapper,我有以下场景:类OrderModel有一个名为'ProductName'的属性,它不在数据库中.所以当我尝试使用以下方法进行映射时:

Mapper.CreateMap<OrderModel, Orders>(); 
Run Code Online (Sandbox Code Playgroud)

它会生成一个异常:

"Project.ViewModels.OrderModel上的以下1个属性未映射:'ProductName'

我已经阅读了AutoMapper的Wiki for Projections相反的情况(额外的属性在目的地,而不是在源,这实际上是我的情况)

如何避免使用automapper来映射此属性?

c# model viewmodel automapper object-object-mapping

263
推荐指数
6
解决办法
19万
查看次数

AutoMapper与ValueInjecter

每次我在StackOverflow上寻找AutoMapper时,我都在阅读有关ValueInjecter的内容.

有人能告诉我它们之间的优缺点(性能,功能,API使用,可扩展性,测试)吗?

.net c# automapper object-object-mapping valueinjecter

209
推荐指数
4
解决办法
5万
查看次数

在Spring中配置ObjectMapper

我的目标是配置objectMapper它只序列化带注释的元素@JsonProperty.

为了做到这一点,我按照这个解释说明了如何配置对象映射器.

我在这里描述了自定义objectmapper .

但是,当NumbersOfNewEvents序列化类时,它仍然包含json中的所有属性.

有人有提示吗?提前致谢

杰克逊1.8.0春季3.0.5

CustomObjectMapper

public class CompanyObjectMapper extends ObjectMapper {
    public CompanyObjectMapper() {
        super();
        setVisibilityChecker(getSerializationConfig()
                .getDefaultVisibilityChecker()
                .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)
                .withFieldVisibility(JsonAutoDetect.Visibility.NONE)
                .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withSetterVisibility(JsonAutoDetect.Visibility.DEFAULT));
    }
}
Run Code Online (Sandbox Code Playgroud)

servlet.xml中

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <context:component-scan base-package="de.Company.backend.web" />

    <mvc:annotation-driven />

    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                    <property name="objectMapper" ref="jacksonObjectMapper" />
                </bean>
            </list>
        </property>
    </bean>

    <bean id="jacksonObjectMapper" class="de.Company.backend.web.CompanyObjectMapper" />
</beans>
Run Code Online (Sandbox Code Playgroud)

NumbersOfNewEvents

public class …
Run Code Online (Sandbox Code Playgroud)

java spring json jackson object-object-mapping

76
推荐指数
8
解决办法
20万
查看次数

域驱动设计,.NET和实体框架

我是域驱动设计的新手,但想要学习它并将其用于新的应用程序.我将使用Entity Framework进行数据访问.

到目前为止的基本布局是:

ASP.NET MVC和其他客户端(移动设备等)
|
Web服务
|
域模型(服务,存储库,聚合,实体和值对象)
|
数据访问层(实体框架)
|
数据存储(SQL Server)

在数据访问层和域模型之间传输数据的最佳方法是什么?我认为域模型中的实体是POCO对象,它们应该映射到Entity Framework对象/从Entity Framework对象映射.这是一个好的解决方案吗?

如果是这样的话:
这种映射应该如何以及在何处发生?(域模型层或数据访问层)
我应该在何处以及如何查询实体框架(即根据搜索返回列表)?

c# domain-driven-design entity-framework visual-studio-2008 object-object-mapping

14
推荐指数
1
解决办法
6813
查看次数

推土机:如何限制映射的深度?

我目前正在使用DozerEntity对象映射到Dto项目中的对象.

我的问题是如何限制内部映射的级别或深度?

例如我有一个AccountProfile其中有一个实体List<AccountProfileDetail>的实体作为成员.此外,AccountProfileDetail它本身也有一个FinancialTransLimit实体作为成员.

现在我想告诉映射器,例如只做映射depth = 2.因此该FinancialTransLimit成员不会被复制到AccountProfileDetail目标对象的成员.

我需要使用Programming API而不是在xml中指定深度.但是,我也没有在xml配置中找到它.

我也试过Orika,但我也没能在Orika找到这样的功能!

以下两个代码(用于使用Dozer和Orika作为替代方案进行测试)可以正常工作并进行深层复制.我需要限制其中至少一个的深度.

有人可以帮帮我吗?

非常感谢!

示例代码:

AccountProfile

//My Entities:
import java.util.List;

public class AccountProfile{

    private Long id;
    private String name;
    private List<AccountProfileDetail> accountProfileDetails;

    public AccountProfile() {
    }

    public Long getId() {
        return this.id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String …
Run Code Online (Sandbox Code Playgroud)

java dozer object-object-mapping

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

MapStruct:将2个对象映射到第3个对象

我有Object1和Object2.现在,我想映射object3,其中包含1和2的属性.

说,我有2个对象:

1. User: {first_name, last_name, id}
2. Address: {street, locality, city, state, pin, id}
Run Code Online (Sandbox Code Playgroud)

现在,有了这些,我想把它映射到

User_View: {firstName, lastName, city, state}.
Run Code Online (Sandbox Code Playgroud)

其中,first_name和last_name来自User对象,来自Address对象的city&state.

现在,我的问题是,怎么做?

但是,目前,我这样做

@Mapper    
public abstract class UserViewMapper {
        @Mappings({
                    @Mapping(source = "first_name", target = "firstName"),
                    @Mapping(source = "last_name", target = "lastName"),
                    @Mapping(target = "city", ignore = true),
                    @Mapping(target = "state", ignore = true)

            })
            public abstract UserView userToView(User user);

        public UserView addressToView(UserView userView, Address address) {

                if (userView == null) {
                    return null;
                }

                if (address == null) …
Run Code Online (Sandbox Code Playgroud)

java object-object-mapping mapstruct

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

将多个对象的多个源映射到一个目标

我想映射以下类

class Schedule {
    ZoneId timezoneId;
    List<AvailabilityRule> rules;
}
Run Code Online (Sandbox Code Playgroud)
class AvailabilityRule {
    long startEpoch;
    long endEpoch;
}
Run Code Online (Sandbox Code Playgroud)

到这些课程。

class ScheduleDTO {
    String timezone;
    List<AvailabilityRuleDTO> rules;
}
Run Code Online (Sandbox Code Playgroud)
class AvailabilityRuleDTO {
    ZonedDateTime startTime;
    ZonedDateTime endTime;
}
Run Code Online (Sandbox Code Playgroud)

timezoneId计算时startEpoch需要和startTime

Instant instant = Instant.ofEpochMilli(startEpoch);
ZonedDateTime zonedDateTime = instant.atZone(timezoneId);
        
Run Code Online (Sandbox Code Playgroud)

我如何使用mapstruct 来实现这一点?

我想要的伪代码

@Mapping(source = {"startEpoch", "timezoneId"}, target = "startTime", qualifiedByName = "epochToString")
AvailabilityRuleDTO toAvailabilityRuleDTO(AvailabilityRule
                                            availabilityRule, Schedule schedule);
Run Code Online (Sandbox Code Playgroud)

java object-object-mapping mapstruct

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

ModelMapper:运行时映射抽象类

我使用 ModelMapper Framework ( http://modelmapper.org/ ) 在 Java 中映射对象。我在映射包含抽象类的具体类(DTO 到实体)时遇到了问题。

示例:任务有一个 AbstractItems 列表。
AbstractItems 是问题和标准。

public class TaskDTO {
   ...
   private List<AbstractItemDTO> items;
}
Run Code Online (Sandbox Code Playgroud)

映射方法:

// task is an TaskDTO object
return getModelMapper().map(task, TaskEntity.class);
Run Code Online (Sandbox Code Playgroud)

ModelMapper 尝试创建 AbstractItem 的新实例,该实例引发异常。有没有办法在运行时映射抽象类?
喜欢 QuestionDTO -> Question, CriteriaDTO -> Criteria

java object-object-mapping modelmapper

8
推荐指数
1
解决办法
4199
查看次数

是否存在在基于DDD的分层体系结构中的模型和数据访问层之间使用LINQ的建议模式

我一直在阅读Tim McCarthy 关于.NET中DDD精彩书籍.但是在他的示例应用程序中,他的基础数据访问是使用SqlCE并且他手工编写SQL内联.

我一直在使用一些模式来利用Entity Framework,但我已经陷入了如何将IRepository linq查询映射到底层数据访问层的问题.

我有一个名为的具体存储库实现.

public EFCustomerRepository : IRepository<DomainEntities.Customer> 
{
    IEnumerable<DomainEntities.Customer> GetAll(
                     Expression<Func<DomainEntities.Customer, bool>> predicate)
    {
        //Code to access the EF Datacontext goes here...
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的EF模型中,我正在使用POCO实体,但即便如此,我的DomainEntity.Customer和我的DataAccessLayer.Customer对象之间也没有原生映射.

所以我不能只Expression<Func<DomainEntities.Customer, bool>> predicate作为参数传递给EFContext.Customers.Where(...);

是否有一种简单的方法来映射 Expression<Func<T, bool>> predicate=>Expression<Func<TOTHER, bool>> predicate

或者我这样做是错的?任何建议/指针赞赏.

c# linq domain-driven-design entity-framework object-object-mapping

7
推荐指数
1
解决办法
375
查看次数

杰克逊 - 用根对象包装对象列表

我的Controller返回一个MyObj对象列表(使用@ResponseBody)

public MyObj 
{
   int a;
   int b;
}
Run Code Online (Sandbox Code Playgroud)

返回JSON如下所示:

[{"a":1,"b":2},{"a":2,"b":2}]
Run Code Online (Sandbox Code Playgroud)

我想包装这个JSON,所以它将返回如下内容:

{ "data": [{"a":1,"b":2},{"a":2,"b":2}]}
Run Code Online (Sandbox Code Playgroud)

从我读到的我需要启用SerializationConfig.Feature.WRAP_ROOT_VALUE或(?)在我的控制器上使用@JsonRootName("data").

还尝试了@XmlRootElement,似乎没什么用.知道用根名称包装对象列表的正确方法是什么?

java jackson object-object-mapping mongo-jackson-mapper

6
推荐指数
1
解决办法
4145
查看次数