Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AutoMapper-保留选定子属性的嵌套映射_C#_C# 4.0_Automapper_Automapper 2 - Fatal编程技术网

C# AutoMapper-保留选定子属性的嵌套映射

C# AutoMapper-保留选定子属性的嵌套映射,c#,c#-4.0,automapper,automapper-2,C#,C# 4.0,Automapper,Automapper 2,所以我有这个, public class Parent { public string SomeProperty { get; set; } public Child ChildProperty { get; set; } } public class Child { public string ChildProperty { get; set; } public string OtherChildProperty { get; set; } } public class Fla

所以我有这个,

public class Parent
{
  public string SomeProperty { get; set; }
  public Child ChildProperty { get; set; }
}
public class Child
{
  public string ChildProperty { get; set; }
  public string OtherChildProperty { get; set; }
}
public class Flat
{
  public string SomeProperty { get; set; }
  public string ChildProperty { get; set; }
}
然后我这样做

Flat source = new Flat { SomeProperty = "test", ChildProperty = "test" };
Parent dest = GetParentFromDataContext();

Mapper.Map<Flat,Parent>(source,dest);
但是,如果我执行以下操作,那么
新子对象{}
将替换从数据上下文中提取的
子对象
,基本上清除
其他子对象属性

Mapper.CreateMap<Flat,Parent>()
  .ForMember(dest => dest.Child
    options => options.MapFrom(source => new Child { ChildProperty = source.ChildProperty } ));
Mapper.CreateMap()
.ForMember(dest=>dest.Child
options=>options.MapFrom(source=>newchild{ChildProperty=source.ChildProperty});

我如何映射它并保留我希望忽略的子属性?

您正在尝试使用automapper反转展平过程,而这对于作业来说是错误的工具。看到这样的问题。

不雅观,但这是可行的

Mapper.CreateMap<Flat,Parent>()
  .ForMember(dest => dest.ChildProperty, options => options.Ignore());
Mapper.CreateMap<Flat,Child>()
  .ForMember(dest => dest.OtherChildProperty, options => options.Ignore());

Mapper.Map<Flat,Parent>(source,dest);
Mapper.Map<Flat,Child>(source,dest.Child);
Mapper.CreateMap()
.FormMember(dest=>dest.ChildProperty,options=>options.Ignore());
Mapper.CreateMap()
.FormMember(dest=>dest.OtherChildProperty,options=>options.Ignore());
映射器映射(源、目标);
映射器映射(源、目标子级);
Mapper.CreateMap<Flat,Parent>()
  .ForMember(dest => dest.ChildProperty, options => options.Ignore());
Mapper.CreateMap<Flat,Child>()
  .ForMember(dest => dest.OtherChildProperty, options => options.Ignore());

Mapper.Map<Flat,Parent>(source,dest);
Mapper.Map<Flat,Child>(source,dest.Child);