Chuck Conway

In The craft

Using AutoMapper with Entity Framework between to EDMX Containers

October 23, 2013 · 1 minute read

If you try to map two EF Models with AutoMapper, you’ll run into an issue when persisting. At runtime, EF add a base EF object to the model. AutoMapper maps these properties. If the mapping is between two models from the same context, then it’s not an issue. The values are the same. If the models live in different edmx containers and issue arises. The EntityState and EntityKey values are also mapped.

Automapper does not have the means to ignore inherited properties. This leaves a problem. How does one map EF models between edmx containers?

To solve this issue, I created a small extension method:

public static class AutoMapperExtension
{
    /// <summary>
    /// Ignores the definition properties for EF models.
    /// </summary>
    /// <typeparam name="S"></typeparam>
    /// <typeparam name="D"></typeparam>
    /// <param name="expression">The expression.</param>
    /// <returns>IMappingExpression{``0``1}.</returns>
    public static IMappingExpression<S, D> IgnoreEFProperties<S, D>(this IMappingExpression<S, D> expression)
    {
        expression.ForMember("EntityKey", o => o.Ignore())
            .ForMember("EntityState", p => p.Ignore());
        return expression;
    }
}