0

我正在使用 EF Code First 并定义了许多 POCO。另一方面,为每个定义了一些 ViewModel 类。到这里为止,有两个项目;模型和 MVC。此外,还有另一个项目包含 UnitOfWork 和存储库模式(通用存储库类)。

在 UnitOfWork 中写入了许多字段和属性。这是一个例子:

public GenericRepository<ActionProvider> ActionProviderRepository
    {
        get
        {
            if (this.actionProviderRepository == null)
            {
                this.actionProviderRepository = new GenericRepository<ActionProvider>(context);
            }
            return actionProviderRepository;
        }
    }

该属性的类型是 Model 项目中定义的 ActionProvider 类的类型。

但我的问题; 我需要将每个 ViewModel 映射到 POCO 类。上网后,我来申请 AutoMapper。所以以下是我在 UserController 类中所做的:

 public class UserController : Controller
{
    private UnitOfWork unitOfWork = new UnitOfWork();
    private User _UserModel = new User();
    private VM_User _VM_User = new VM_User();
    //
    // GET: /User/

    public ViewResult Index()
    {
        _VM_User = Mapper.Map<MAHAL_E_MA_Model.POCO.User, VM_User>(_UserModel);


        return View(unitOfWork.UserRepository.Get(orderBy: us => us.OrderByDescending(u => u.ID)).OfType<User>().ToList());
    }
}

错误是:

缺少类型映射配置或不支持的映射。

我已经尝试过这些链接和其他一些链接,但对我没有用! 这个

和这个

任何帮助将不胜感激..

4

2 回答 2

3

您需要在某处创建地图

Mapper.CreateMap<MAHAL_E_MA_Model.POCO.User, VM_User>();

我有一个Mapping.Setup()方法Application_Start可以创建所有需要的地图。

于 2013-06-05T14:13:10.897 回答
1

我终于通过以下代码行克服了这个问题,并希望分享它可能对其他人有用:

public ViewResult Index()
    {
        var query = unitOfWork.UserRepository.Get(orderBy: us => us.OrderByDescending(u => u.ID)).OfType<User>().ToList();
        Mapper.CreateMap<User, VM_User>();
        IList<VM_User> vm_Users = Mapper.Map<IList<User>, IList<VM_User>>(query);

        return View(vm_Users);
    }
于 2013-06-05T14:41:26.883 回答