首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AutoMapper:为什么UseValue只执行一次

AutoMapper:为什么UseValue只执行一次
EN

Stack Overflow用户
提问于 2011-01-11 21:27:25
回答 1查看 7.2K关注 0票数 15

为什么UseValue只执行一次?我需要为每个请求调用TeamRepository。

我怎样才能做到这一点?

TeamEmployeeInput:TeamEmployee的映射

代码语言:javascript
运行
复制
CreateMap<TeamEmployee, TeamEmployeeInput>()
    .ForMember(x => x.Teams, x => x.UseValue(GetTeamEmployeeInputs()))
    .ForMember(d => d.SelectedTeam, s => s.MapFrom(x => x.Team == null ? 0 : x.Team.Id));

private IEnumerable<TeamDropDownInput> GetTeamEmployeeInputs()
{
    Team[] teams = CreateDependency<ITeamRepository>().GetAll();
    return Mapper.Map<Team[], TeamDropDownInput[]>(teams);
}

域对象:

代码语言:javascript
运行
复制
public class TeamEmployee : Entity
{
    public virtual Employee Employee { get; set; }
    public virtual Team Team { get; set; }
}

视图模型对象:

代码语言:javascript
运行
复制
public class TeamEmployeeInput
{
    public int? Id { get; set; }
    public string EmployeeLastName { get; set; }
    public string EmployeeEMail { get; set; }
    public string EmployeeFirstName { get; set; }

    public int SelectedTeam { get; set; }

    public IList<TeamDropDownInput> Teams { get; set; }
}


public class TeamDropDownInput : IDropdownList
{
    public int Id { get; set; }
    public string Text { get; set; }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-11 21:53:03

尝试MapFrom选项。它提供了一个委托,每次映射发生时都会调用该委托。从快速的DateTime测试和我的命令窗口来看,这似乎是可行的。

类似于:

代码语言:javascript
运行
复制
public class Foo {
    public DateTime bar { get; set; }
}

public class Foo1
{
    public DateTime bar1 { get; set; }
}
Mapper.CreateMap<Foo, Foo1>()
    .ForMember(x => x.bar1, opt => opt.MapFrom(x => DateTime.Now)); // not using x, your function returns the value for bar1

我必须指出,这不是AutoMapper设计的工作方式。AutoMapper应该将属性从一个模型映射到另一个模型。因此,如果modelA上不存在数据,则不应该将该数据映射到modelB

您的代码更改将是:

代码语言:javascript
运行
复制
CreateMap<TeamEmployee, TeamEmployeeInput>()
    .ForMember(x => x.Teams, x => x.MapFrom(x => GetTeamEmployeeInputs()))
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4662863

复制
相关文章

相似问题

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