小编Ale*_*mes的帖子

是否有使用AutoMapper的ValueResolver映射EF实体的EntityKey值的通用方法?

不确定标题是否有意义,但这就是我正在做的事情.我正在使用AutoMapper将我的实体框架实体映射到我的DTO对象,反之亦然.当我尝试将DTO数据映射到EF实体时出现问题.EntityKey没有属性映射的属性.为了解决这个问题,我做了以下几点:

        Mapper.CreateMap<VideoDTO, Video>()
            .ForMember(dest => dest.EntityKey, opt =>   
opt.ResolveUsing<VideoEntityKeyResolver>());
Run Code Online (Sandbox Code Playgroud)

VideoEntityKeyResolver类如下所示:

public class VideoEntityKeyResolver : ValueResolver<VideoDTO, EntityKey>
{
    protected override EntityKey ResolveCore(VideoDTO source)
    {
        EntityKey key = new EntityKey("EntityFrameworkTestingEntities.Videos",
            "VideoId", source.VideoId);
        return key;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更通用的方法这样做我可以有一个带有构造函数的类,它在构造函数中获取实体集名称,键属性名称和键值.

我已经考虑过将一个EntityKey属性添加到我的DTO对象中,这听起来很像穿越流,因为创建DTO对象的重点是在我的应用程序的其余部分严重依赖于我的数据层.

在一个完全不相关的注释(我可以根据需要创建一个新问题),在使用AutoMapper时我需要在哪里定义我的映射?目前我正在我的上下文对象(这是我的EF存储库对象)的构造函数中进行此操作,但我认为这相当昂贵而且不正确,但是,它有效.

c# asp.net-mvc orm entity-framework automapper

6
推荐指数
1
解决办法
4656
查看次数

标签 统计

asp.net-mvc ×1

automapper ×1

c# ×1

entity-framework ×1

orm ×1