Model view controller 自动映射EF6动态代理

Model view controller 自动映射EF6动态代理,model-view-controller,entity-framework-6,automapper,dynamic-proxy,Model View Controller,Entity Framework 6,Automapper,Dynamic Proxy,我们正在开发一个EF6Web项目代码。 在审查了项目的许多不同方法后,我们决定将解决方案分为以下几个项目: “模型”项目,包含EF DataContext和所有实体 带有所有登录名的“服务”项目,调用实体检索数据,并将DTO中的数据发送到Web项目 “Web”项目、视图模型、控制器和视图 在服务层,我们为需要发送到web层的每个实体创建DTO。因此,我们拥有来自模型层的实体,然后我们将这些实体转换为服务层中的DTO,并将这些DTO发送到web层。 最后在web层中,我们获取这些DTO并将其转

我们正在开发一个EF6Web项目代码。 在审查了项目的许多不同方法后,我们决定将解决方案分为以下几个项目:

  • “模型”项目,包含EF DataContext和所有实体
  • 带有所有登录名的“服务”项目,调用实体检索数据,并将DTO中的数据发送到Web项目
  • “Web”项目、视图模型、控制器和视图
在服务层,我们为需要发送到web层的每个实体创建DTO。因此,我们拥有来自模型层的实体,然后我们将这些实体转换为服务层中的DTO,并将这些DTO发送到web层。 最后在web层中,我们获取这些DTO并将其转换为我们在视图中使用的模型视图

通过这种方式,我们分离了所有层,而Web层不知道我们的模型层

我们使用AUtoMapper从实体->DTO->模型视图进行所有映射

我的问题是,AutoMapper在Web层工作得非常好,因为它接收DTO对象并将其转换为ModelView对象

问题出在我们的服务层,因为我们接收的是DynamicPrexies对象而不是实体对象,所以AUtoMapper给了我们一个错误:

var myEntity = Dbset.FirstOrDefault(p => p.Id == id); 
var myDto = Mapper.Map<LinkDto>(myEntity);
在Web项目中,我们有该项目的配置文件,在服务项目中,我们有另一个配置文件:

public AutoMapperServiceProfile()
{
    CreateMap<LinkDto, Link>().ReverseMap();
}
public AutoMapperServiceProfile()
{
CreateMap().ReverseMap();
}
是否有任何解决方案:

A) 是否将查询生成的DynamicProxy转换为实体对象

B) 告诉AutoMapper去读那些DynamicProxies

public AutoMapperServiceProfile()
{
    CreateMap<LinkDto, Link>().ReverseMap();
}