2013-02-22 2 views
1

У меня есть два сложных типа: один из них находится в Service Layer, который служит как ViewModel, так и другой на уровне репозитория. Они определяются, как указано ниже:AutoMapper для пользовательских сложных типов

//The Repository Layer 
public class ProductDetailsEntity 
     { 
      public Int64 StockNumber { get; set; } 

      public String StockName { get; set; } 

      public String Image { get; set; } 

      public Decimal Price { get; set; } 

      public String JewelleryName { get; set; } 

      public String ShortDescription { get; set; } 

      public Int64 ShippingDays { get; set; } 

      public String DesignCode { get; set; } 

      public List<SettingDetails> SettingsDetails { get; set; } 

      public List<SideStoneDetails> SideStoneDetails { get; set; } 
     } 

// The Service Layer 
public class ProductDetailsModel 
    { 
     public Int64 StockNumber { get; set; } 

     public String StockName { get; set; } 

     public String Image { get; set; } 

     public Decimal Price { get; set; } 

     public String JewelleryName { get; set; } 

     public String ShortDescription { get; set; } 

     public Int64 ShippingDays { get; set; } 

     public String DesignCode { get; set; } 

     public List<SettingDetailsModel> SettingsDetails { get; set; } 

     public List<SideStoneDetailsModel> SideStoneDetails { get; set; } 
    } 

Имея SettingsDetailsModel, а также SettingDetails как:

public class SettingDetails // same Structure with different Names 
    { 
     public Int64 AttributeId { get; set; } 

     public String AttributeName { get; set; } 

     public String AttributeValue { get; set; } 

    } 

И SideStoneDetailsModel и SideStoneDetails как:

public class SideStoneDetailsModel 
    { 
     public Int64 SideStoneSettingId { get; set; } 

     public String SideStoneSettingName { get; set; } 

     public String SideStoneSettingValue { get; set; } 
    } 

Теперь, в то время как отображение из Entity к модели, Выбрасывает AutoMapper Исключение:

The following property on Repository.Entities.SettingDetails cannot be mapped: 
SettingsDetails 
Add a custom mapping expression, ignore, add a custom resolver, or modify the destination type Service.Models.SettingDetailsModel. 
Context: 
Mapping to property SettingsDetails of type Repository.Entities.SettingDetails from source type Service.Models.SettingDetailsModel 
Mapping to property SettingsDetails of type System.Collections.Generic.List`1[[Repository.Entities.SettingDetails, Repository, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] from source type System.Collections.Generic.List`1[[Service.Models.SettingDetailsModel, Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] 
Mapping to type Repository.Entities.ProductDetailsEntity from source type Service.Models.ProductDetailsModel 
Exception of type 'AutoMapper.AutoMapperConfigurationException' was thrown. 

Теперь реализация Mapper содержит

Mapper.CreateMap<SettingDetails, SettingDetailsModel>(); 
Mapper.CreateMap<SideStoneDetails, SideStoneDetailsModel>(); 
Mapper.CreateMap<ProductDetailsModel, ProductDetailsEntity>(); 
Mapper.AssertConfigurationIsValid(); 

В основном его стенает в списки Пользовательского типа. Я не понимаю, где происходит не так: Uptill теперь, что я нашел это:

  • Добавить Seperate Сопоставления для различных типов. ПРОВЕРИТЬ !
  • Пользовательские функции картографа - но почему? В этом случае я не могу понять, почему это должно быть сделано?

Как это разрешить? Я хочу МАП от Repository Сущности моей ViewModel

ответ

1

ли вы на самом деле имели в виду эту строку:

Mapper.CreateMap<ProductDetailsModel, ProductDetailsEntity>(); 

или вы хотите создать карту наоборот?

Mapper.CreateMap<ProductDetailsEntity, ProductDetailsModel>(); 

Я не уверен, в каком направлении вы хотите отобразить, но если на самом деле вы сделать хотите бывший вы будете иметь, чтобы определить карту от SettingDetailsModel обратно SettingDetails, то есть:

Mapper.CreateMap<SettingDetails, SettingDetailsModel>(); 
+0

Я хочу, чтобы он отображал его из репозитория в ViewModels. Извините, если это неясно. – bhuvin

+0

Вы хотите отобразить из ProductDetailsModel в ProductDetailsEntity? если да, то следуйте советам в моем посте. если нет, замените свой третий оператор сопоставления. – wal

+0

Удивительно тупой от меня .... !!! – bhuvin