2012-03-15 363 views
1

我是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(輸入)

這是該行多數民衆贊成花費過多時間。我有一個狀態類型,並且有超過10,000個員工記錄與POCO實例相關聯...我使用Mapper只希望映射狀態,但由於某種原因它解析了整個圖。有誰能說出如何避免它?我的輸入只有狀態字段,甚至沒有包含任何子列表,但Mapper仍然不確信並且現在解析整個POCO超過幾分鐘。

+0

嘗試使用秒錶或類似dotTrace,你會肯定知道這行代碼被抽空多的時間 – Omu 2012-03-15 19:01:46

+0

@ (實體) 。輸入來自(實體); 這是需要時間的路線,我不知道這是爲什麼,因爲它適用於大多數人,但對於一條記錄來說,需要相當長的時間才能回來。 – afr0 2012-03-16 06:54:28

+1

你可以將它分成input.InjectFrom(entity); input.InjectFrom (實體); ... – Omu 2012-03-16 08:31:04

回答

0

根據注射名爲「IdsToTypeIds」我想,它進入數據庫,並提取數據,就像Repo.Get<Type>(Id)

的東西,如果你不想穿越某些屬性可以指定在匹配方法

此規則

,也可以注射在構造函數接收參數,如果你需要任何

反正最快的方法是使用SmartConventionInjection,這就是我建議你做

只是拷貝在您的解決方案,並使用它,你會使用ConventionInjection