Более автоматический способ использования automapper для сопоставления с объектами Entity Framework - PullRequest
1 голос
/ 11 октября 2011

Я сопоставляю несколько контрактов данных WCF с классами Entity Framework.

Для каждого класса я должен делать такие вещи:

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 ]

1 голос
/ 11 октября 2011

Предполагая, что ваш класс контракта не имеет свойств ассоциации, вы можете использовать этот метод расширения , чтобы игнорировать их все в одном выражении:

Mapper.CreateMap<MyContractClass, MyDalClass>().IgnoreAllNonExisting();
0 голосов
/ 24 января 2013

Вы можете использовать EntitiesToDTOs , что проще, чем AutoMapper. Вам не нужно ни писать карту, ни настраивать ее. Все это автоматически генерируется инструментом.

0 голосов
/ 11 октября 2011

Я использую шаблоны T4 для генерации сопоставлений из модели EDMX.Это работает очень хорошо и сэкономило мне много времени.Идея от этого парня .Вы можете скачать его шаблоны и настроить их под свой сценарий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...