2011-10-11 60 views
1

我將相當多的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。

回答

1

假設你的合同類不具有關聯屬性,你可以使用this extension method忽略它們都在同一個語句:

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

我使用T4模板來生成從EDMX模型的映射。這工作得很好,爲我節省了很多時間。這個想法是從this guy。您可以下載他的模板並對其進行自定義以適應您的場景。

0

您可以使用比AutoMapper簡單的EntitiesToDTOs。您不必編寫地圖,也不需要配置它。它全部由該工具自動生成。