C# 实体框架继承自动映射问题

C# 实体框架继承自动映射问题,c#,.net,entity-framework,automapper,C#,.net,Entity Framework,Automapper,我使用单独的表来保存相互继承的对象。我的设置如下: public class User : Entity { /*...*/ } public class Employee : User { /* ... */ } 在数据库中,这意味着我有一个表Users,其中Guid作为主键,还有一个表Employees,其中列UserId作为主键/外键。这部分是有效的。我可以使用实体框架上下文获取和设置实体 我还有以下对象和映射: public class UserDto : EntityDto { /*

我使用单独的表来保存相互继承的对象。我的设置如下:

public class User : Entity { /*...*/ }
public class Employee : User { /* ... */ }
在数据库中,这意味着我有一个表
Users
,其中
Guid
作为主键,还有一个表
Employees
,其中列
UserId
作为主键/外键。这部分是有效的。我可以使用实体框架上下文获取和设置实体

我还有以下对象和映射:

public class UserDto : EntityDto { /*...*/ }
public class EmployeeDto : UserDto { /*...*/ }

Mapper.CreateMap<Entity, EntityDto>();
Mapper.CreateMap<User, UserDto>().IncludeBase<Entity, EntityDto>();
Mapper.CreateMap<Employee, EmployeeDto>().IncludeBase<User, UserDto>();

我的猜测是,当getById返回一个不是雇员的用户时,它会抛出。如果getById可以返回用户,那么您必须映射到UserDto(Automapper可能映射到EmployeeDto,但仍然是UserDto)。
getById
的返回类型是
Employee
类型,我用于测试的id属于一个Employee。如果显式设置这两个类型参数,是否也会发生这种情况<代码>Mapper.Map(dbEmployee)是的,成功了!你知道为什么这只是偶尔发生吗?如果你把它写在回复中,我会接受它作为答案。我做了一些测试,无法重现这个问题。只有当我从getById方法而不是从Employee方法返回用户时,才会出现异常。可以添加getById方法吗?我希望看到它的实施。当EF返回代理时,可能是个问题。
public EmployeeDto GetById(Guid id)
{
    var dbEmployee = getById(id);
    return Mapper.Map<EmployeeDto>(dbEmployee); 
}