【发布时间】:2015-12-12 15:00:20
【问题描述】:
当我使用 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; }
}
//视图模型
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;
}
【问题讨论】:
-
你能显示你创建地图的代码和你映射的代码吗?