使用ForAllMembers时,AutoMapper忽略IsSourceValueNull

时间:2014-02-18 22:37:45

标签: automapper automapper-3

我有最新的3.1.1版本的AutoMapper。出于某种原因,使用ForAllMemebers时IsSourceValueNull似乎不起作用或我期望得到不同的结果:

这是我想要做的一个例子。请不要评论与实体完全相同的DTO。这只是我遇到更复杂模型的一个例子。

public class User{
     public int Id {get;set;}
     public string UserName {get;set;}
     public virtual int? ContactId {get;set;} //Foreign Key to contact object
     public virtual Contact Contact {get;set;}
}


public class Contact {
     public int Id {get;set;}
     public string FirstName {get;set;}
     public string LastName {get;set;}
}


public class UserDto {
     public int Id {get;set;}
     public string UserName {get;set;}
     public int? ContactId {get;set;} //Foreign Key to contact object
     public ContactDto Contact {get;set;}
}

public class ContactDto {
     public int Id {get;set;}
     public string FirstName {get;set;}
     public string LastName {get;set;}
}

映射的代码如下所示:

AutoMapper.Mapper.CreateMap<User,UserDto>().ForAllMembers(u => u.Condition(s => !s.IsSourceValueNull));
AutoMapper.Mapper.CreateMap<Contact,ContactDto>();

我收到一个错误,即Source Value不能为null。这意味着,从数据库返回的联系人为空,这没关系,但是AutoMapper没有运行Cotnact或ContactId的条件。 DB中的两者都可以为null。我不得不求助于检查ForMember块中的源是否为空。

0 个答案:

没有答案
相关问题