我正在使用 AutoMapper 从 IDataReader 映射到一个简单的 DTO。
我可以在使用 ForMember 时映射属性,但在使用 ConstructUsing/ConvertUsing 时不能。在这种情况下,我所有的 NUnit 测试都失败了,因为 AutoMapper 返回一个具有空属性的 DTO。有趣的是,这种行为在 MSTest 中不会发生:在 MSTest 下运行测试时,映射有效。
这是代码:
public class Dto
{
public string Name { get; set; }
public string Value { get; set; }
}
这在 NUnit 和 MSTest 中传递:
Mapper.CreateMap<IDataReader, Dto>()
.ForMember(x => x.Name, map => map.MapFrom(reader => reader["Name"]))
.ForMember(x => x.Value, map => map.MapFrom(reader => reader["Value"]));
这仅在 MSTest 中传递,并在 NUnit 中返回具有 null 属性的 Dto:
Mapper.CreateMap<IDataReader, Dto>()
.ConvertUsing(Map); // ConstructUsing doesn't work either
private Dto Map(IDataReader reader)
{
return new Dto
{
Name = (string)reader["Name"],
Value = (string)reader["Value"]
};
}
MyTestMethod 甚至没有在 NUnit 中调用。
这是 AutoMapper 中的错误吗?在 NUnit 中?两个都?
我不应该将 AutoMapper 用于 IDataReader 映射吗?
提前致谢。