当我使用AutoMapper映射我的ViewModel并获取所有新闻时,为我抛出了错误。
...错误 无法映射Mosque.Core.ViewModels.CategoryViewModel上的以下属性: 分类 添加自定义映射表达式,忽略,添加自定义解析程序或修改目标类型Mosque.Core.ViewModels.CategoryViewModel。
请帮助我,谢谢
//模型
public class News
{
public int Id { get; set; }
public string Title { get; set; }
public virtual ICollection<Category> Categories { get; set; }
public virtual User User { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Title { get; set; }
public virtual ICollection<News> News { get; set; }
}
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<News> News { get; set; }
}
//的ViewModels
public class NewsViewModel
{
public int Id { get; set; }
public string Title { get; set; }
public virtual ICollection<CategoryViewModel> Categories { get; set; }
public virtual UserViewModel User { get; set; }
}
public class CategoryViewModel
{
public int Id { get; set; }
public string Title { get; set; }
public virtual ICollection<NewsViewModel> News { get; set; }
}
public class UserViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<NewsViewModel> News { get; set; }
}
我如何用于选择所有新闻?
- UPDATE1 -
我在项目中使用了洋葱架构,我在服务层安装了AutoMapper,我希望从存储库中获取所有新闻并填入ViewModels并传递给UI。 我的服务层代码是......
public List<NewsViewModel> GetAll()
{
Mapper.CreateMap<News, NewsViewModel>()
.ForMember(dest => dest.Categories, src => src.MapFrom(p => p.Categories))
.ForMember(dest => dest.User, src => src.MapFrom(p => p.User));
Mapper.AssertConfigurationIsValid();
var viewModels = new List<NewsViewModel>();
foreach (var item in _newsRepository.GetAll())
{
var viewModel = Mapper.Map<News, NewsViewModel>(item);
viewModels.Add(viewModel);
}
return viewModels;
}
答案 0 :(得分:0)
您似乎没有为Catagory
和User
创建地图。
添加以下地图:
Mapper.CreateMap<User, UserViewModel>();
Mapper.CreateMap<Category, CategoryViewModel>();
顺便问一下,为什么要在GetAll
方法中创建地图?您可以创建一次地图,通常是在应用程序启动时。