首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AutoMapper 6-如何创建忽略和映射对象列表的映射

AutoMapper 6-如何创建忽略和映射对象列表的映射
EN

Stack Overflow用户
提问于 2017-04-28 13:54:40
回答 1查看 475关注 0票数 0

我在AutoMapper上是个小新手,我在Stackoverflow和Github上几乎没有找到任何关于v6.0的东西。在这个问题上我需要帮助

我有两个实体:

代码语言:javascript
运行
复制
public class DocFinanceiro
{
    public int AutoId { get; set; }  

    public virtual ICollection<QuitacaoDocFinan> QuitacoesDocFinan { get; set; } 
}

public class QuitacaoDocFinan
{
        public int AutoId { get; set; }

        public int DocFinanceiroId { get; set; }

        public virtual DocFinanceiro DocFinanceiro { get; set; }

        public decimal ValorTotal { get; set; }
    }
}

他的ViewModels:

代码语言:javascript
运行
复制
public class DocFinanceiroViewModel
{
        public DocFinanceiroViewModel()
        {
            ValorPago = QuitacoesDocFinan.Where(x => x.Cancelada == false).Sum(x => x.ValorTotal);
        }

        public virtual ICollection<QuitacaoDocFinanViewModel> QuitacoesDocFinan { get; set; }

        public decimal ValorPago { get; set; }
}

public class QuitacaoDocFinanViewModel
{
        public int AutoId { get; set; }

        public int DocFinanceiroId { get; set; }

        public virtual DocFinanceiroViewModel DocFinanceiro { get; set; }

        public decimal ValorTotal { get; set; }
}

以及DocFinanceiro和DocFinanceiroViewModel之间的映射:

代码语言:javascript
运行
复制
    public class DomainToViewModelMappingProfile : Profile
    {
        public DomainToViewModelMappingProfile()
        {
            CreateMap<DocFinanceiro, DocFinanceiroViewModel>().ForMember(x => x.ValorPago, y => y.Ignore())                                                                                                            
                                                                    .MaxDepth(3)
                                                                    .PreserveReferences();

            CreateMap<QuitacaoDocFinan, QuitacaoDocFinanViewModel>();
        }
    }

当我只设置以下属性之一时,此映射工作。

.ForMember(x => x.ValorPago,y => y.Ignore())

.MaxDepth(1).PreserveReferences();

,但当我尝试两种原因时,会有一个例外。我到处寻找,但没有成功。

以及控制器,在这里,我进行映射:

代码语言:javascript
运行
复制
var documentos = Mapper.Map<IEnumerable<DocFinanceiro>, IEnumerable<DocFinanceiroViewModel>>(*repository*);

抱歉犯了什么错,但我不知道该怎么做.

EN

回答 1

Stack Overflow用户

发布于 2017-04-28 18:20:58

在初始化之前,您正在尝试访问DocFinanceiroViewModel构造函数中的DocFinanceiroViewModel集合。您的DocFinanceiroViewModel应该是这样的:

代码语言:javascript
运行
复制
public class DocFinanceiroViewModel
{
    public virtual ICollection<QuitacaoDocFinanViewModel> QuitacoesDocFinan { get; set; }

    public decimal ValorPago
    {
        get
        {
            return QuitacoesDocFinan.Where(x => x.Cancelada == false).Sum(x => x.ValorTotal);
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43681953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档