使用automapper映射到Entity Framework对象的更自动方式

时间:2011-10-11 17:35:25

标签: entity-framework automapper

我正在将相当多的WCF数据合同映射到实体框架类。

对于每一堂课,我都必须做这件事:

Mapper.CreateMap<MyContractClass, MyDalClass>()
    .ForMember(x => x.EntityKey, opt => opt.Ignore())
    .ForMember(x => x.SomeAssociation, opt => opt.Ignore())
    .ForMember(x => x.SomeAssociationReference, opt=> opt.Ignore())
    // Repeat 
    // the 
    // last 
    // /two 
    // lines 
    // for 
    // every 
    // single 
    // association
    // (Some classes have a lot of associations)
    ;

有更简单的方法吗?有哪些方法可以排除EntityFramework提供的所有额外内容?

或者这只是必须手工完成?

注意:我已经广泛评估了POCO模板,但它不适用于我的场景。请不要只推荐使用而不是Automapper。

3 个答案:

答案 0 :(得分:1)

假设您的合同类没有关联属性,您可以使用this extension method在一个语句中忽略它们:

Mapper.CreateMap<MyContractClass, MyDalClass>().IgnoreAllNonExisting();

答案 1 :(得分:0)

我正在使用T4模板从EDMX模型生成映射。这非常有效,到目前为止我节省了很多时间。这个想法来自this guy。您可以下载他的模板并对其进行自定义以适合您的方案。

答案 2 :(得分:0)

您可以使用比AutoMapper更简单的EntitiesToDTOs。您不必编写地图,也不必配置地图。它全部由工具自动生成。