Entity Framework, Polymorphism, and AutoMapper: Can't We All Be Friends?
1 min read

Entity Framework, Polymorphism, and AutoMapper: Can't We All Be Friends?

At work we were running into an interesting issue. We are using EF Code First, AutoMapper, and the dynamic proxies generated by EF. We map our domain entities onto our view models.

The Problem

AutoMapper fails to map a derived type to a view model base class for use in a general-use scenario:

public IEnumerable<AbstractViewModel> GetPolymorphicClasses() {
    var list = db.AbstractClasses.ToList();

    // list is a list of dynamically proxied derived types
    // DerivedTypeA, DerivedTypeB, and so on
    // aka DynamicProxy_xxxxxxx
    return Mapper.Map<IEnumerable<AbstractClass>, IEnumerable<AbstractViewModel>>(list);
}

The "Solution"

This is not a solution, but it's the best I could do with limited knowledge of AutoMapper and a need to just get it working quickly. Thanks to this post on the same problem, I was able to retrofit the answerer's answer to a solution that worked for me (his generated a stack overflow because it seemed to get stuck converting in an infinite loop).

If Jimmy Bogard reads this, please tell me what I'm doing wrong and how to actually fix it:

Enjoying these posts? Subscribe for more