我们正在使用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,在映射完成时提供值,而不是之后设置值?