2012-05-21 90 views
1

我使用NHibernate(v3.3)來加載/保存我的域模型類到數據庫。我已經創建了一堆View Model類用於MVC3網站的前端。所以我打算使用AutoMapper(v2.1)將視圖模型類映射到域類。是否可以在nhibernate中使用automapper?

我已經定義了兩個類Restaurant和RestaurantViewModel之間的Map配置。下面是方法:

public void Create(IConfiguration configuration) 
    { 
     if (configuration == null) 
      throw new ArgumentNullException("configuration"); 

     IMappingExpression<RestaurantViewModel, Restaurant> map = 
      configuration.CreateMap<RestaurantViewModel, Restaurant>(); 

     map.ForMember(x => x.Address, o => o.ResolveUsing(x => new Address 
                   { 
                     BuildingNumber = x.BuildingNumber, 
                    City = x.City, 
                    PostalCode = x.PostalCode, 
                    Street = x.Street 
                   })); 

     map.ForMember(x => x.Categories, o => o.Ignore()); 
     map.ForMember(x => x.Photo, o => o.Ignore()); 
    } 

但調用Mapper.Map當我得到異常<RestaurantViewModel>(餐廳);

這是異常的文本:

Missing type map configuration or unsupported mapping. 

Mapping types: 
RestaurantProxy -> RestaurantViewModel 
RestaurantProxy -> FoodDelivery.Website.Models.RestaurantViewModel 

Destination path: 
RestaurantViewModel 

Source value: 
FoodDelivery.DataDomain.Restaurant 

它看起來像NHibernate的在我用的名字RestaunrantProxy餐廳創建代理,所以當我問AutoMapper映射酒家RestaurantViewModel它實際上映射代理和因爲沒有該映射器的映射引發異常。

有沒有什麼方法可以修復代碼?

回答

3

看起來您的錯誤在將Restaurant映射到RestaurantViewModel時出現問題。您的映射似乎只覆蓋了另一個方向的映射,查看模型到實體。

嘗試添加?

configuration.CreateMap<Restaurant, RestaurantViewModel>(); 

這應該允許您將Restaurant實體映射到您的視圖模型。

+0

你是對的,我沒有正確地加載地圖餐廳RestaurantViewModel(標記類與它的內部和配置模塊沒有找到它)。 對不起,這樣愚蠢的問題令人不安。 –

相關問題