Tôi mới sử dụng AutoMapper và, trừ khi tôi hiểu nhầm, AutoMapper sẽ luôn tạo bản sao sâu khi ánh xạ tới Dto. Tuy nhiên, mã thử nghiệm sau đây cho tôi thấy rằng nó tạo ra các bản sao nông. Tôi đang thiếu gì ở đây?Tại sao AutoMapper tạo bản sao nông nghiệp?
Mapping Config
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>();
}
}
}
Model và dto Cài đặt
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; }
}
}
Kiểm tra Mã
var home = new Home();
home.Stuff= new MyStuff(){Abba = 1};
var homeDto = Mapper.Map<HomeDto>(home);
homeDto.MyStuff.Abba = 33;
Sau Modi fying homeDto của Abba giá trị đến 33, giá trị Abba của nhà cũng thay đổi đến 33. Tôi đã cấu hình sai một cái gì đó? Tôi phải làm gì để sửa lỗi này?
có thể trùng lặp của [Tự động trả về tham chiếu đến cùng một đối tượng khi ánh xạ chuỗi tới mảng] (http://stackoverflow.com/questions/28874357/automapper-returns-reference-to-the-same-object-when-mapping -Số-tới-mảng) –
Xin lưu ý rằng thẻ [tag: model-view-controller] dành cho các câu hỏi về mẫu * *. Câu hỏi của bạn là về việc triển khai ASP.NET cụ thể, vì vậy hãy sử dụng [tag: asp.net-mvc] để thay thế. –
theo bài đăng trên blog được đưa ra bởi giải pháp @DavidHall cho những gì bạn đang yêu cầu là thêm "Mapper.CreateMap();" càng nhiều cấu hình. Nhưng hành vi những gì bạn tìm thấy trong tự động bản đồ là một loại thú vị và quan trọng cần lưu ý. –
Prashant