AutoMapper会覆盖源属性

时间:2017-07-28 03:22:12

标签: c# .net mapping automapper dto

我有以下代码来更新<EntityType Name="SsprRegistrationActivityEvent"> <Key> <PropertyRef Name="id" /> </Key> <Property Name="eventTime" Type="Edm.DateTimeOffset" Nullable="false" /> <Property Name="role" Type="Edm.String" /> <Property Name="registrationActivity" Type="Edm.String" /> <Property Name="id" Type="Edm.String" Nullable="false" /> <Property Name="displayName" Type="Edm.String" /> <Property Name="userName" Type="Edm.String" /> </EntityType> 实体:

Student

我的学生实体:

using static AutoMapper.Mapper;
...
public void Update(StudentInputDto dto)
{
   Student student = _studentRepository.GetStudent();
   student = Map<Student>(dto); //student.studentnumer is null here :(
   _studentRepository.Update(student);
}

我的StudentInputDto:

public class Student
{
   public Guid studentid { get; set; }
   public string firstname { get; set; }
   public string lastname { get; set; }
   public int age { get; set; }
   public Guid genderid { get; set; }
   public string studentnumber { get; set; }
}

问题是映射后Student.studentnumber为null。

我想以映射后保留Student.studentnumber的方式配置AutoMapper。怎么做 ?任何帮助将不胜感激。

我最初的想法是以下列方式配置AutoMapper:

public class StudentInputDto
{
   public string FirstName { get; set; }
   public string LastName { get; set; }
   public int Age { get; set; }
   public Guid GenderId { get; set; }
}

但是那个配置并没有解决问题。

1 个答案:

答案 0 :(得分:1)

查看 Automapper 的方法说明。

----------|-----
     xxxxx

----------|-----
        xxxxx
  

执行从源对象到新目标对象的映射。源类型是从源对象推断出来的。

TDestination Map<TDestination>(object source); 会创建一个新的student = Map<Student>(dto)对象并分配给Student变量

要映射两个现有对象,请使用student代替

Mapper.Map(dto, student);
  

执行从源对象到现有目标的映射   对象