我如何在 ICollat​​ion<> 字段中使用 AutoMapper

how do i use AutoMapper in ICollation<> Fields

当我使用 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; }
}

如何使用 select 所有新闻?

--更新1--

我在项目中使用了洋葱架构,我在服务层安装了 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;
}

您似乎没有为 CatagoryUser 创建地图。

添加以下地图:

Mapper.CreateMap<User, UserViewModel>();
Mapper.CreateMap<Category, CategoryViewModel>();

顺便问一下,为什么要在 GetAll 方法中创建地图?您可以创建一次地图,通常是在应用程序启动时。