使AutoMapper忽略所有与EF相关的属性(泛型类型)

时间:2015-08-24 09:06:45

标签: c# entity-framework-4 automapper entitycollection

根据SO上的一些帖子,我正在尝试为AutoMapper创建一个扩展方法,以便对于我所有的EF 4.0业务对象,类型EntityReference<T>和{{1的所有EF相关属性从映射中排除。

我已经提出了这个代码:

EntityCollection<T>

但不知何故,虽然它的public static class IgnoreEfPropertiesExtensions { public static IMappingExpression<TSource, TDestination> IgnoreEfProperties<TSource, TDestination>( this IMappingExpression<TSource, TDestination> expression) { var sourceType = typeof (TSource); foreach (var property in sourceType.GetProperties()) { // exclude all "EntityReference" and "EntityReference<T>" properties if (property.PropertyType == typeof(EntityReference) || property.PropertyType.IsSubclassOf(typeof(EntityReference))) { expression.ForMember(property.Name, opt => opt.Ignore()); } // exclude all "EntityCollection<T>" properties if (property.PropertyType == typeof(EntityCollection<>)) { expression.ForMember(property.Name, opt => opt.Ignore()); } } return expression; } } 属性工作得很好,但对于集合来说,这并没有做它应该做的事情 - AutoMapper仍尝试映射EntityReference<T>并在尝试此操作时崩溃。 ...

如何正确捕获所有EntityCollection<MySubEntity>属性?我并不真正关心子类型EntityCollection<T>是什么 - 我不想指定类型为<T>所有属性(无论集合包含什么)需要从映射中排除。

有什么想法吗?

0 个答案:

没有答案