2010-01-08 25 views
5

Có thể với Automapper để thiết lập quy ước sao cho bản đồ không phải được tạo bằng tay cho các tình huống mà thực thể bạn đang ánh xạ tới chỉ nói "ViewModel" được thêm vào.Công ước tự động

Như một ví dụ tôi thà không cần phải thiết lập bản đồ sau:

Mapper.CreateMap<Error, ErrorViewModel>(); 

Tôi hiểu rằng nếu chiếu là cần thiết rằng tôi sẽ cần phải tạo ra một bản đồ tùy chỉnh, nhưng có một quy ước để tạo bản đồ sẽ là tốt đẹp.

+0

Một lưu ý phụ, chúng tôi đã đi qua lại về việc thêm quét cơ bản. Ngay cả với một số lượng lớn các định nghĩa ánh xạ (khoảng 4-500), nó chỉ là không đủ để chúng ta có thể nhìn vào nó. –

+0

thử ValueInjecter http://valueinjecter.codeplex.com/documentation, nó không yêu cầu tạo bản đồ cho từng loại kết hợp để nhập – Omu

+0

Tại sao bạn không thiết lập nó? – gdoron

Trả lời

6

Bạn cần sử dụng Mapper.DynamicMap<TDest>(source) để lập bản đồ.

Như bạn có thể thấy trong ví dụ bên dưới, nó tự động ánh xạ các thuộc tính phù hợp từ nguồn đến đích.

using AutoMapper; 
using System.Diagnostics; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var source = new Foo {Value = "Abc"}; 
     var destination = Mapper.DynamicMap<FooViewModel>(source); 

     Debug.Assert(source.Value == destination.Value); 
    } 
} 

public class Foo 
{ 
    public string Value { get; set; } 
} 

public class FooViewModel 
{ 
    public string Value { get; set; } 
} 
+1

Cảm ơn, tôi không thấy Mapper.DynamicMap – beckelmw

Các vấn đề liên quan