【问题标题】:Ignore property in Automapper from destination to source?忽略 Automapper 中从目标到源的属性?
【发布时间】:2017-06-25 20:08:48
【问题描述】:

映射配置文件:

Mapper.CreateMap<Customer, CustomerDto>();
        Mapper.CreateMap<CustomerDto, Customer>();
        Mapper.CreateMap<Movie, MoviesDto>();
        Mapper.CreateMap<MoviesDto, Movie>(MemberList.Source);

Movie类:

namespace Demo3.Models
{
    public class Movie
    {
        public int Id { get; set; }

        [Required(ErrorMessage = "Please Enter Customer Name")]
        [StringLength(255)]
        public string Name { get; set; }

        public Genre Genre { get; set; }

        [Required]
        public byte GenreId { get; set; }

        public DateTime DateAdded { get; set; }
        [Display(Name = "Release Date")]
        public DateTime ReleaseDate { get; set; }

        [Display(Name = "Number In Stock")]
        [Range(1, 20)]
        public byte NumberInStock
        {
            get; set;
        }
    }
}

MoviesDto类:

namespace Demo3.Dtos
{
    public class MoviesDto
    {
        public int Id { get; set; }

        [Required]
        [StringLength(255)]
        public string Name { get; set; }

        [Required]
        public byte GenreId { get; set; }

        public DateTime ReleaseDate { get; set; }

        //public Genre Genre { get; set; }
        [Range(1, 20)]
        public byte NumberInStock
        {
            get; set;
        }
    }
}

例外:

EntityFramework.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理

我需要在保存时忽略Genre 属性。

【问题讨论】:

  • 发生此错误时,您正在映射哪个方向?顺便说一句,听起来错误实际上不在 AutoMapper 中,而是在 EntityFramework 中

标签: c# automapper


【解决方案1】:

在定义单个属性映射时(您没有这样做,因为它们通过具有相同名称自动映射),您必须指定忽略指令,如下所示:

Mapper.CreateMap<MoviesDto, Movie>()
      .ForMember(d => d.Genre, o => o.Ignore());

【讨论】:

  • @BDL 很公平,我已经扩展了我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2017-12-31
  • 1970-01-01
  • 2017-02-19
相关资源
最近更新 更多