我正在使用 NHibernate (v3.3) 将我的域模型类加载/保存到数据库。我创建了一堆 View Model 类以在 MVC3 网站的前端使用。所以我打算使用 AutoMapper (v2.1) 将视图模型类映射到域类。
我已经在两个类 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>(restaurant)时出现异常;
这是异常的文本:
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 在我的 Restaurant 周围创建名为 RestaurantProxy 的代理,所以当我要求 AutoMapper 将 Restaurant 映射到 RestaurantViewModel 时,它实际上映射了 Proxy,并且因为该映射器没有 Map 会引发异常。
有什么方法可以修复代码吗?