簡體   English   中英

AutoMapper覆蓋源屬性

[英]AutoMapper overrides source properties

我有以下代碼來更新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);
}

我的學生實體:

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; }
}

我的StudentInputDto:

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

問題是映射后Student.studentnumber為null。

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

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

Mapper.Initialize(cfg => {
   cfg.CreateMap<StudentInputDto, Student>()
      .ForMember(dest => dest.studentnumber, opt => opt.Ignore());
});

但是這種配置並不能解決問題。

看一下Automapper的方法描述。

TDestination Map<TDestination>(object source);

執行從源對象到新目標對象的映射。 從源對象推斷出源類型。

student = Map<Student>(dto)將創建一個新的Student對象並分配給student變量

要映射兩個現有對象,請使用Mapper.Map(dto, student); 代替

TDestination Map<TSource, TDestination>(TSource source, TDestination destination)

執行從源對象到現有目標對象的映射。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM