自动映射:Mapper.Map在每个构建中都不起作用

时间:2015-04-27 11:58:22

标签: c# automapper

我对AutoMapper

有一个非常奇怪的问题

在我的Windows服务中,当我创建从IDataReaderList object的映射时,它仅在我运行服务时才第一次运行。

一旦我停止服务并再次运行它,AutoMapper就无法映射。以下是我的代码:

物业类

public class Employee
{
   public int Id { get; set; }

   public string Name { get; set; }

   public string Number { get; set; }
}

实际实施

var employeeData = DataHelper.ExecuteReader("Select Id, Name, Number from dbo.Employee");
var employees = new List<Employee>();
employees = employeeData.MapToList<List<Employee>>();

通用扩展方法

public static T MapToList<T>(this DataTable reader) where T : class
{
    Mapper.CreateMap<IDataReader, T>();
    //  Mapper.AssertConfigurationIsValid();
    return Mapper.Map<IDataReader, T>(reader.CreateDataReader());
}

除此之外,我注意到当我清理解决方案并再次运行服务时,它开始工作。

我无法确定它为什么会这样。

1 个答案:

答案 0 :(得分:0)

鉴于您的表格字段与Employee的属性具有相同的名称,您应该可以这样做(没有任何显式的映射配置):

var employeeData = DataHelper.ExecuteReader("Select Id, Name, Number from dbo.Employee");
var employees = AutoMapper.Mapper.DynamicMap<IDataReader, List<Employee>>(employeeData.CreateDataReader());