2015-12-21 2 views
0

Я использую расширения Dapper для создания своих репозиториев в приложении MVC, которое настроено на использование Structuremap. Для одной из моделей мне нужно создать собственное сопоставление, чтобы игнорировать поле.Как настроить собственное расширение Dapper Extensions с помощью Structuremap?

public class ServiceMapper : ClassMapper<Service> 
{ 
    public ServiceMapper() 
    { 
     //Ignore this property entirely 
     Map(x => x.IsRunningNormally).Ignore(); 

     //optional, map all other columns 
     AutoMap(); 
    } 
} 

Теперь, чтобы вызвать этот картографа, мне нужно, чтобы установить его, я называю эту строку кода в конструкторе моего репозитория.

  DapperExtensions.DapperExtensions.DefaultMapper = typeof(ServiceMapper); 

Как только я ударил эту линию, StructureMap пытается разрешить тип и бросает мне исключение:

ServiceMonitor.Infrastructure.ServiceMapper не GenericTypeDefinition. MakeGenericType может быть вызван только для типа, для которого Type.IsGenericTypeDefinition является истинным.

Я не уверен, что означает эта ошибка и как ее решить? Может ли кто-нибудь объяснить мне, что здесь происходит?

ответ

2

Хорошо, наконец, выяснилось, что проблема. Проблема в том, что по умолчанию DapperExtensions сканирует любые пользовательские составители, которые вы написали, в той же сборке, что и ваши классы POCO модели. В моем случае это была сборка DataTransferObjects.

Мой класс Mapper присутствовал в сборке репозитория, который отличается от сборки DTO.

мне нужно сказать Dapper расширения для сканирования этой сборки для пользовательских отображений:

DapperExtensions.DapperExtensions.DefaultMapper = typeof (ServiceMapper); 

// Tell Dapper Extension to scan this assembly for custom mappings 
DapperExtensions.DapperExtensions.SetMappingAssemblies(new[] 
{ 
    typeof (ServiceMapper).Assembly 
}); 

После того, как я создал, как и выше, мой код начал работать. Это нигде не документировано, и мне потребовалось некоторое время, чтобы понять это. Надеюсь, это поможет кому-то другому, имеющему ту же проблему.

+0

[Ссылка на официальные документы] (https://github.com/tmsmith/Dapper-Extensions/wiki/Customized-mapping-for-a-class) –

Смежные вопросы