C# 自动映射程序未从源填充目标

C# 自动映射程序未从源填充目标,c#,automapper,C#,Automapper,我有一个简单的测试解决方案,它由两个项目(一个“业务”层和一个数据访问层)组成,使用Catel将这两个项目联系在一起—工作正常,没有问题 然而,我一直在阅读AutoMapper如何通过允许轻松填充DTO来帮助在这样的设置中移动数据,并决定对其进行查看…这就是我的问题开始出现的原因 我正在使用Entity Framework 6.1,VS 2013 Express for Desktop并访问SQL Server Express 14 db-数据检索和数据在视图中的正确显示没有问题 AutoMap

我有一个简单的测试解决方案,它由两个项目(一个“业务”层和一个数据访问层)组成,使用Catel将这两个项目联系在一起—工作正常,没有问题

然而,我一直在阅读AutoMapper如何通过允许轻松填充DTO来帮助在这样的设置中移动数据,并决定对其进行查看…这就是我的问题开始出现的原因

我正在使用Entity Framework 6.1,VS 2013 Express for Desktop并访问SQL Server Express 14 db-数据检索和数据在视图中的正确显示没有问题

AutoMapper是使用NuGet添加的

为了使用AutoMapper,我在App.xaml.cs中设置了以下内容

private void InitializeAutomapper()
{
    Mapper.CreateMap<Result, ResultDto>();
    Mapper.AssertConfigurationIsValid();
}
课程结果:

public class ResultDto
{
    int Div { get; set; }
    DateTime Date { get; set; }
    string HomeTeam { get; set; }
    string AwayTeam { get; set; }
    int FTHG { get; set; }
    int FTAG { get; set; }
    string FTR { get; set; }

    // Added tonight to try and get it to work
    public ResultDto()
    {
        Div = 0;
        Date = DateTime.Now;
        HomeTeam = null;
        AwayTeam = null;
        FTHG = 0;
        FTAG = 0;
        FTR = null;
    }
}
@stuartd,以下内容用于检索从中获取结果的ResultList:

// Produce a list of DataLayer.Result entities.
 var ResultList = (from x in dbContext.Results.Local
                   where x.HomeTeam == team.TeamName.ToString() || x.AwayTeam == team.TeamName.ToString()
                   orderby x.Date
                   select x).ToList();
请注意,“team.Teamname”是从外部源传递到上面的,似乎工作正常

总而言之-

  • 我生成结果列表作为结果实体的列表
  • 用列表中的第一个实体填充结果
  • 尝试将此结果实体映射到ResultTo
  • 失败:(

  • 希望这有帮助!

    AutoMapper可以根据提供的参数计算出您映射的类型。请尝试以下操作:

    ResultDto resultDTO = Mapper.Map<ResultDto>(res);
    
    ResultDto ResultDto=Mapper.Map(res);
    
    更新
    这是错误的,或者至少没有帮助。我们需要查看注释中提到的源类和目标类。

    默认情况下,类成员声明为
    private
    ,除非另有指定,否则
    ResultDto
    属性在类外部不可见

    public class ResultDto
    {
        int Div { get; set; }
        ....
    }
    
    需要

    public class ResultDto
    {
        public int Div { get; set; }
        ....
    }
    

    你能显示
    结果
    结果到
    类吗?你是通过EF获得
    结果
    的吗?如果源对象是EF代理,那么会有一些复杂的问题,一个解决方案是使用,你可以这样做,但这绝对不会有什么区别。是的。我不确定类型参数是从哪一个方向来的,我认为这是错误的可能是
    -但我想我错了。呃-那根本就不可能编译。别理我。我有一个愚蠢的时刻!我是个十足的白痴!这一定是一个“欲速则不达”的经典例子-当然,你是对的。我当时急着去尝试这种很酷的新东西,我犯了一个noob错误……我真倒霉,三次倒霉!
    public class ResultDto
    {
        int Div { get; set; }
        ....
    }
    
    public class ResultDto
    {
        public int Div { get; set; }
        ....
    }