valueInjecter занимает слишком много времени

Я новичок в ValueInjecter, я использовал его в течение недели из примера приложения. Теперь это код, который я пытаюсь использовать

    public virtual TInput MapToInput(TEntity entity)
    {
        var input = new TInput();
        input.InjectFrom(entity)
            .InjectFrom<NormalToNullables>(entity)
            .InjectFrom<EntitiesToInts>(entity);
        return input;
    }

Он работал нормально, но теперь внезапно input.InjectFrom, кажется, занимает слишком много времени. Я не совсем уверен, что я испортил здесь. Может кто подскажет заранее спасибо.

Обновление: e.InjectFrom (ввод)

это линия, которая занимает слишком много времени. У меня есть тип статуса, и с экземпляром POCO связано более 10 000 записей о сотрудниках... Я использую Mapper, надеясь отобразить только статус, но по какой-то причине он анализирует весь график. Может кто подскажет как этого избежать? мой ввод имеет только поля состояния и даже не содержит дочернего списка, но все же Mapper не убежден и анализирует весь POCO уже более пары минут.


person afr0    schedule 15.03.2012    source источник
comment
попробуйте использовать секундомер или что-то вроде dotTrace, и вы точно будете знать, какая строка в вашем коде занимает много времени   -  person Omu    schedule 15.03.2012
comment
@ChuckNorris input.InjectFrom(entity) .InjectFrom‹NormalToNullables›(entity) .InjectFrom‹EntitiesToInts›(entity); это линия, которая требует времени, я не знаю почему, поскольку она работает для большинства из них, но для одной записи требуется довольно много времени, чтобы вернуться.   -  person afr0    schedule 16.03.2012
comment
вы можете разделить его на input.InjectFrom(entity); input.InjectFrom‹Nullables›(сущность); ... так далее.   -  person Omu    schedule 16.03.2012
comment
@ChuckNorris source.InjectFrom(viewmodel) это все, чего я пытаюсь достичь прямо сейчас. Модель просмотра состояния содержит только 4 свойства, тогда как источник состояния содержит те же свойства, НО у него также есть список сотрудников, который фактически исходит из EF, который я там не контролирую. Для одного типа статуса у меня более 10 тысяч сотрудников. .InjectFrom также просматривает все свойства Employee источника, тогда как я хочу, чтобы он отображал только свойства корневого уровня, т.е. Состояние источника, в ViewModel без анализа свойств иерархических записей сотрудников 10k+. Спросите, если вы не поняли, что я говорю.   -  person afr0    schedule 16.03.2012
comment
@ChuckNorris Я только что подтвердил e.InjectFrom‹IdsToTypeIds›(ввод); эта реализация вызывает снижение производительности. м на это снова   -  person afr0    schedule 16.03.2012
comment
Кстати, было бы очень полезно, если бы вы показали свою модель и модель представления, а также IdsToTypeIds   -  person Omu    schedule 16.03.2012


Ответы (1)


судя по имени инъекции "IdsToTypeIds" я предполагаю, что она идет в БД и вытягивает данные, что-то вроде Repo.Get<Type>(Id)

если вы не хотите проходить через некоторые свойства, вы можете указать это правило в методе Match

а также инъекции могут получать параметры в конструкторе, если вам нужны какие-либо

в любом случае, самый быстрый способ — это использовать SmartConventionInjection и это вот что я вам рекомендую

просто скопируйте его в свое решение и используйте, как если бы вы использовали ConventionInjection

person Omu    schedule 16.03.2012