Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Entity framework 在AutoMapper 8.0中,缺少使用_Entity Framework_Asp.net Core_Automapper - Fatal编程技术网

Entity framework 在AutoMapper 8.0中,缺少使用

Entity framework 在AutoMapper 8.0中,缺少使用,entity-framework,asp.net-core,automapper,Entity Framework,Asp.net Core,Automapper,在AutoMapper 8.0之前,我使用过以下代码: CreateMap<ApplicationRole, RoleViewModel>() .ForMember(d => d.Permissions, map => map.MapFrom(s => s.Claims)) .ForMember(d => d.UsersCount, map => map.ResolveUsing(s => s.Users?.Count ?? 0))

在AutoMapper 8.0之前,我使用过以下代码:

CreateMap<ApplicationRole, RoleViewModel>()
.ForMember(d => d.Permissions, map => map.MapFrom(s => s.Claims))
.ForMember(d => d.UsersCount, map => map.ResolveUsing(s => s.Users?.Count ?? 0))
                    .ReverseMap();

如何解析它?

将ResolveUsing替换为MapFrom,并向lambda(TDestination)添加一个输入参数


您不需要使用此表达式,您可以使用“Users.Count”,如果列表为空,它将返回0。

您只需删除ResolveUsing(或MapFrom),它将由约定用户映射。Count=>UserScont。

我也有同样的问题,我正在使用以下原型的
resolvesusing

void ResolveUsing(Func<TSource, TResult> mappingFunction);

希望这能有所帮助。

确保提供完整的错误消息,包括任何stacktraces(如果有)。正如文档所说,您需要基于Func的重载,而不是基于表达式的重载。请原谅我,我能知道为什么我在这个答案上得到-1吗?谢谢。我刚刚给了你一个+1,因为如果一个库不能保持向后兼容性,那么你自己去做是完全合理的。这救了我一天。这是一个极好的主意!
.ForMember(d => d.UsersCount, map => map.MapFrom((s,d) => s.Users?.Count ?? 0))
void ResolveUsing(Func<TSource, TResult> mappingFunction);
using System;
using AutoMapper;

namespace myLibrary.Extensions
{
    public static class AutoMapperCompatibilityExtensions
    {
        // Summary:
        //     Resolve destination member using a custom value resolver callback. Used instead
        //     of MapFrom when not simply redirecting a source member This method cannot be
        //     used in conjunction with LINQ query projection
        //
        // Parameters:
        //   resolver:
        //     Callback function to resolve against source type
        public static void ResolveUsing<TSource, TDestination, TMember, TResult>(this IMemberConfigurationExpression<TSource, TDestination, TMember> member, Func<TSource, TResult> resolver) => member.MapFrom((Func<TSource, TDestination, TResult>)((src, dest) => resolver(src)));
    }
}
using myLibrary.Extensions;

...
    ... map.ResolveUsing(s =>  ...
...