在源中没有的映射对象上设置属性

时间:2017-02-08 22:23:15

标签: c# automapper

我们正在使用AutoMapper执行dababase< => viewmodel转换。

在我们的数据库中,我们有一条包含customerid的记录。我们的viewmodel没有。

当我们从数据库映射到viewmodel时,它很容易忽略customerid。但是当我们从viewmodel映射到数据库时,我们如何设置customerid?

我们知道在我们进行映射时我们想要设置的值,但我们如何将其纳入地图配置?

public class DbUser
{
    public string customerid { get; set; }
    public string userid { get; set; }
    public string userinfo { get; set; }
}

public class UserModel
{
    public string userid { get; set; }
    public string userinfo { get; set; }
}

// mapping DbUser to UserModel is trivial
Mapper.CreatedMap<DbUser, UserModel>();

// mapping UserModel to DbUser, how do we set customerid?
Mapper.CreatedMap<UserModel, DbUser>()
    .ForMember(u => u.customerid, opt => opt.Ignore();

// One way is simple
var dbUser = this.dbContext.DbUsers.FirstOrDefault();
var userModel = Mapper.Map<UserModel>(dbUser);

// The other way I don't like
var userModel = getUserModel();
var dbUser = Mapper.Map<DbUser>(userModel);
dbUser.customerid = "TheCustomerid";

有没有办法在映射中设置customerid,在映射完成时提供值,而不是之后设置值?

0 个答案:

没有答案