Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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#自动映射忽略方法项目到<;TModel>;()_C#_Automapper - Fatal编程技术网

C#自动映射忽略方法项目到<;TModel>;()

C#自动映射忽略方法项目到<;TModel>;(),c#,automapper,C#,Automapper,如何在使用ProjectTo()自动映射时忽略实体类中的公共方法 我的实体类是 public AspNetUser() { public string Id { get; set; } public string First_name { get; set; } public string Middle_name { get; set; } public string Last_name { get; set; } public

如何在使用
ProjectTo()
自动映射时忽略实体类中的公共方法

我的实体类是

public AspNetUser()
 {
     
    public string Id { get; set; }      
    public string First_name { get; set; }
    public string Middle_name { get; set; }
    public string Last_name { get; set; }

    public string GetFullName()
    {
        return string.Join(" ", new[] { First_name, Middle_name, Last_name }.Where(c => !string.IsNullOrEmpty(c)));
    }
  }

我认为你不应该因为以下原因而放弃:

防止延迟加载/选择N+1问题
由于AutoMapper生成的LINQ投影由查询提供程序直接转换为SQL查询,因此映射发生在SQL/ADO.NET级别,而不涉及实体。所有数据都被急切地提取并加载到DTO中

我认为
GetFullName()
IQueryable
上不可用。Queryable意味着您要构建一个要在SQL Server上执行的查询。而
GetFullName()
在SQL Server上不可执行

  • 你应该过滤你的查询

  • 使用
    .ToList()

  • 像这样使用Automapper:

    _mapper.Map<CalendarEvent, CalendarEventForm>(calendarEvent);
    
    \u mapper.Map(日历事件);
    
  • 您还可以映射列表

    _mapper.Map<List<UserModel>>
    _mapper.Map<List<UserModel>, List<UserEntity>>
    
    \u mapper.Map
    _地图绘制者
    

    我希望这能对你有所帮助。

    我认为你不应该因为:

    防止延迟加载/选择N+1问题
    由于AutoMapper生成的LINQ投影由查询提供程序直接转换为SQL查询,因此映射发生在SQL/ADO.NET级别,而不涉及实体。所有数据都被急切地提取并加载到DTO中

    我认为
    GetFullName()
    IQueryable
    上不可用。Queryable意味着您要构建一个要在SQL Server上执行的查询。而
    GetFullName()
    在SQL Server上不可执行

  • 你应该过滤你的查询

  • 使用
    .ToList()

  • 像这样使用Automapper:

    _mapper.Map<CalendarEvent, CalendarEventForm>(calendarEvent);
    
    \u mapper.Map(日历事件);
    
  • 您还可以映射列表

    _mapper.Map<List<UserModel>>
    _mapper.Map<List<UserModel>, List<UserEntity>>
    
    \u mapper.Map
    _地图绘制者
    
    我希望这对您有所帮助。

    cfg.clearprofixes()
    cfg.ClearPrefixes()