我使用NHibernate(v3.3)将我的域模型类加载/保存到数据库。我已经在MVC3网站的前端创建了大量的View Model类。所以我计划使用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&lt; RestaurantViewModel&gt;(餐厅);
时我遇到了异常这是例外文本:
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将Restaurant映射到RestaurantViewModel时,它实际上映射了Proxy,因为该mapper没有Map会引发异常。
我有什么方法可以修复代码吗?
答案 0 :(得分:3)
看起来您的错误在将Restaurant
映射到RestaurantViewModel
时遇到了问题。您的映射仅显示为覆盖另一方向的映射,将模型视图为实体。
尝试添加此内容?
configuration.CreateMap<Restaurant, RestaurantViewModel>();
这应该允许您将餐厅实体映射到您的视图模型。