实体框架继承Automapper问题

时间:2015-10-27 14:25:46

标签: c# .net entity-framework automapper

我使用单独的表来保存彼此继承的对象。我的设置是这样的:

public class User : Entity { /*...*/ }
public class Employee : User { /* ... */ }

在数据库中,这意味着我有一个表Users,其中Guid为主键,表Employees的列为UserId作为主键/外键。这部分有效。我可以使用Entity Framework上下文来获取和设置实体。

我还有以下对象和映射:

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>();

当我找到我的员工时,我有时会收到错误:Unable to cast object of type 'MyNamespace.UserDto' to type 'MyNamespace.EmployeeDto'。错误将在下面的映射行中抛出。它真的很奇怪,因为错误只会被抛出。当它扔掉它时,我还没有找到一种模式。

public EmployeeDto GetById(Guid id)
{
    var dbEmployee = getById(id);
    return Mapper.Map<EmployeeDto>(dbEmployee); 
}

0 个答案:

没有答案