2012-11-02 10 views
12

Tôi đang sử dụng automapper và tôi muốn biết nếu nó có thể bỏ qua một ánh xạ của một trường khi đó là null.Automapper - Bỏ qua ánh xạ với điều kiện

Đó là mã của tôi:

.ForMember(dest => dest.BusinessGroup_Id, 
      opt => opt.MapFrom(src => (int)src.BusinessGroup)) 
  • src.BusinessGroup type = "enum"
  • dest.BusinessGroup_Id = int

Mục tiêu đó là để ingore rằng Mapping nếu src.BusinessGroup = null.

Trả lời

25

Tôi nghĩ NullSubstitute tùy chọn sẽ làm các trick

.ForMember(d => d.BusinessGroup_Id, o => o.MapFrom(s => (int?)s.BusinessGroup)); 
.ForMember(d => d.BusinessGroup_Id, o => o.NullSubstitute(0)); 

BTW bạn có thể viết điều kiện của bạn trong hành động lập bản đồ:

.ForMember(d => d.BusinessGroup_Id, 
      o => o.MapFrom(s => s.BusinessGroup == null ? 0 : (int)s.BusinessGroup)); 

CẬP NHẬT nếu bạn không thể gán một số giá trị mặc định cho tài sản của bạn, bạn chỉ có thể bỏ qua nó và bản đồ chỉ không null:

.ForMember(d => d.BusinessGroup_Id, o => o.Ignore()) 
.AfterMap((s, d) => 
    { 
     if (s.BusinessGroup != null) 
      d.BusinessGroup_Id = (int)s.BusinessGroup; 
    }); 
+0

Xin chào lazyberezovsky, cảm ơn vì phản ứng nhanh của bạn! Tôi không thể đặt 0 thành BusinessGroup_Id vì đó là foreingKey trên DB – user1520494

+2

Ty !! cập nhật cuối cùng của bạn hoạt động hoàn hảo cho tôi! :) – user1520494