我对AutoMapper还不熟悉,除非我理解有误,否则AutoMapper在映射到Dto时应该始终创建深拷贝。然而,以下测试代码向我展示它正在创建浅拷贝。我错过了什么?
映射配置
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using AutoMapper;
using Sandbox.Models;
namespace Sandbox.Core.Automapper
{
public static class AutoMapperWebConfiguration
{
public static void Configure()
{
ConfigureUserMapping();
}
private static void ConfigureUserMapping()
{
Mapper.CreateMap<Home, HomeDto>();
}
}
}
模型和数据传输对象设置
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Sandbox.Models
{
public class Home
{
public int Price { get; set; }
public int Price2 { get; set; }
public MyStuff Stuff{ get; set; }
}
public class HomeDto
{
public int Price { get; set; }
public int Price2 { get; set; }
public MyStuff Stuff{ get; set; }
}
public class MyStuff
{
public int Abba { get; set; }
}
}
测试代码
var home = new Home();
home.Stuff= new MyStuff(){Abba = 1};
var homeDto = Mapper.Map<HomeDto>(home);
homeDto.MyStuff.Abba = 33;
将homeDto的Abba值修改为33后,home的Abba值也会更改为33。我是否配置错误?如何修复此问题?