session_expires_at
我的person
数据库表中有一个列。此列是类型DATETIME
并且可以为空。在我的代码中,我的User
对象用
public DateTime? SessionExpiresAt { get; set; }
当使用MySQL.Data包从数据库中读取用户时,我想使用 AutoMapper 将数据库结果映射到User
对象。
CreateMap<DbDataReader, User>()
.ForMember(user => user.SessionExpiresAt,
memberOptions => memberOptions.MapFrom(dbDataReader => dbDataReader.IsDBNull(1) ? null : dbDataReader.GetDateTime(1)));
因为我知道这个值可能是空的,所以我之前正在运行检查以避免异常。如果该数据为 null,我想将 null 分配给属性,否则为 datetime 值。不幸的是,出现了这个错误
'null' 和 'System.DateTime' 之间没有隐式转换
我玩了一下,该MapFrom
方法无法采用空值。所以如果我这样做
CreateMap<DbDataReader, User>()
.ForMember(user => user.SessionExpiresAt, memberOptions => memberOptions.MapFrom(dbDataReader => null));
我收到这个错误
无法从用法中推断出类型参数。尝试明确指定类型参数
我也试过这个,但没有帮助
CreateMap<DbDataReader, User>()
.ForMember(user => user.SessionExpiresAt,
memberOptions =>
{
memberOptions.AllowNull();
memberOptions.MapFrom(dbDataReader => dbDataReader.GetDateTime(1));
});
DateTime.Now
如果数据库值为空,我无法采用默认值。必须可以分配一个空值。
如何修复它以便我可以为映射规则中的属性分配空值?如果值为空,也许我可以禁用映射过程,这样它就不会分配一些东西?