EF - 将Dataaccess.Employees类型转换为ViewModels.Employee时出错

时间:2013-04-01 11:08:13

标签: c# .net asp.net-mvc linq entity-framework

我有一个名为Employee的视图模型类和一个名为Employees的EF实体。如果我写下面的查询,我得到一个错误,指出“无法转换类型,已经存在显式转换”我知道如何使用select new ViewModel.Employee子句来解决这个问题,但是想知道是否有任何简洁的方法来解决这个问题?非常感谢帮助-thanks

var selectedEmployee = (from q in emsCtx.Employees
                                                where q.Id == employee.Id
                                                select q).ToList().FirstOrDefault();
                       employeeData.Employees = selectedEmployee;     

1 个答案:

答案 0 :(得分:1)

如果您有两种不同的类型,即使它们具有相同的属性,您也需要在它们之间进行映射。您可以通过多种方式执行此操作,但AutoMapper之类的工具可以提供帮助。如果您的类型在他们拥有的公共属性中大部分(或完全)相似,那么AutoMapper非常好。

AutoMapper将允许您在两种类型之间进行映射配置,然后映射它们。

例如,像这样:

Mapper.CreateMap<DataAccess.Employee, ViewModels.Employee>();

var dataEmployee = // data access

var viewModelEmployee = Mapper.Map(dataEmployee);