Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动映射器:Mapper.Map在每个生成中都不起作用_C#_Automapper - Fatal编程技术网

C# 自动映射器:Mapper.Map在每个生成中都不起作用

C# 自动映射器:Mapper.Map在每个生成中都不起作用,c#,automapper,C#,Automapper,我对AutoMapper 在我的windows服务中,当我创建从IDataReader到List object的映射时,它只有在我运行服务时才第一次起作用 一旦我停止服务并再次运行它,AutoMapper就无法映射。下面是我的代码: 财产类别 public class Employee { public int Id { get; set; } public string Name { get; set; } public string Number { get; set;

我对
AutoMapper

在我的windows服务中,当我创建从
IDataReader
List 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>>();
var employeeData=DataHelper.ExecuteReader(“从dbo.Employee中选择Id、名称、编号”);
var employees=新列表();
employeeData.MapToList();
通用扩展方法

public static T MapToList<T>(this DataTable reader) where T : class
{
    Mapper.CreateMap<IDataReader, T>();
    //  Mapper.AssertConfigurationIsValid();
    return Mapper.Map<IDataReader, T>(reader.CreateDataReader());
}
公共静态T映射列表(此数据表读取器),其中T:class
{
CreateMap();
//assertConfigurationsValid();
返回Mapper.Map(reader.CreateDataReader());
}
除此之外,我注意到,当我清理解决方案并再次运行服务时,它开始工作


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

如果表的字段与
员工的属性同名,您应该可以这样做(无需任何显式映射配置):

var employeeData=DataHelper.ExecuteReader(“从dbo.Employee中选择Id、名称、编号”);
var employees=AutoMapper.Mapper.DynamicMap(employeeData.CreateDataReader());

您是否遇到错误?请发布错误消息和堆栈跟踪。@ThomasLevesque:不,我没有收到任何错误。但它无法映射到列表对象。当我使用
Mapper.assertconfigurationsvalid()时,表示未映射任何属性。当我清理并重建解决方案时,它工作正常。更新的答案,请参见上文。@user2988458您的意思是它在第一次工作时工作,但在重新启动服务时不工作?是的。如果我的映射中存在问题,那么它第一次就不应该工作。@user2988458我建议您在不使用AutoMapper的情况下手动进行映射,并查看它是否按预期工作。@user2988458 OK。您可以在
CreateMap
var employeeData = DataHelper.ExecuteReader("Select Id, Name, Number from dbo.Employee");
var employees = AutoMapper.Mapper.DynamicMap<IDataReader, List<Employee>>(employeeData.CreateDataReader());