2016-04-15 147 views
0

OWF_ManagersNextTwoMonths返回類型是OWF_ManagerRelationshipViewModel的一個副本,它在其中註釋掉了一些東西。此方法是使用OWF_ManagerRelationshipViewModel作爲返回類型的原始修改版本。目標是消除一個代理類以減少返回的記錄數。爲什麼這種類型不能分配給參數類型?

另一個區別是在return語句中傳入新的OWF_ManagersNextTwoMonthsViewModelautomapper

我在managerListFinal.Add(item);(managerListFinal)automapper部分返回類型的項目下得到一個紅色波形。

managerListFinal.Add(item);的第一個紅色波浪線說:

'參數類型Jupiter.Core.Model.OWF_ManagerRelationship不 分配給參數類型 Jupiter.Core.Model.OWF_ManagersNextTwoMonthsViewModel'。

第二紅色波浪線在(managerListFinal)說:

'參數類型Jupiter.Core.Model.OWF_ManagersNextTwoMonthsViewModel 是不能分配給參數類型 Jupiter.Core.Model.OWF_ManagerRelationship'。

我試着也返回下面的automapper回報managerListFinal,卻得到了一個消息,說同樣的事情,因爲它沒有對上面說的第一種使用automapper

新的OWF_ManagersNextTwoMonthsViewModel是在沒有Document請求列表的情況下創建的,目的是爲了不返回這些記錄。我認爲它會起作用,因爲它與原來的OWF_ManagerRelationshipViewModel非常相似。

我認爲automapper返回將返回我所需要的,如果它工作正常。我正在嘗試獲取onsites日期,目標日期,用戶名和經理類型。在下面的方法中使用現場和目標日期,而DisplayName,Manager Type和Users顯示在視圖的網格中。

我認爲這將會像複製viewmodel並忽略它的doc請求列表部分一樣簡單。我不明白爲什麼編譯器不喜歡這個或者如何糾正它。

原始OWF_ManagerRelationshipViewModel:

public class OWF_ManagerRelationshipViewModel 
{ 
    public OWF_ManagerRelationshipViewModel() 
    { 
     OWF_Onsites = new List<OWF_OnsitesViewModel>(); 
     OWF_DocumentRequestList = new List<OWF_DocumentRequestListViewModel>(); 
    } 

    public int RelationshipId { get; set; } 

    [Required] 
    public int ManagerId { get; set; } 
    public string Users { get; set; } 
    public string ManagerType { get; set; } 

    [Required] 
    public string DisplayName { get; set; } 
    public string CurrentState { get; set; } 
    public Nullable<bool> IsActive { get; set; } 

    public IEnumerable<OWF_AccessGroupViewModel> UsernameList { get; set; } 
    public virtual ICollection<OWF_DocumentRequestListViewModel> OWF_DocumentRequestList { get; set; } 
    public virtual ICollection<OWF_OnsitesViewModel> OWF_Onsites { get; set; } 
} 

我的新OWF_ManagersNextTwoMonthsViewModel:

帶有紅色波浪線
 public class OWF_ManagersNextTwoMonthsViewModel 
{ 
    public OWF_ManagersNextTwoMonthsViewModel() 
    { 
     //OWF_DocumentRequestList = new List<OWF_DocumentRequestListViewModel>(); 
     OWF_Onsites = new List<OWF_OnsitesViewModel>(); 
    } 

    public int RelationshipId { get; set; } 

    [Required] 
    public int ManagerId { get; set; } 
    public string Users { get; set; }    
    public string ManagerType { get; set; }   

    [Required] 
    public string DisplayName { get; set; } 
    public string CurrentState { get; set; } 
    public Nullable<bool> IsActive { get; set; } 

    public IEnumerable<OWF_AccessGroupViewModel> UsernameList { get; set; }         
    //public virtual ICollection<OWF_DocumentRequestListViewModel> OWF_DocumentRequestList { get; set; }  
    public virtual ICollection<OWF_OnsitesViewModel> OWF_Onsites { get; set; } 
} 

方法:

 public IEnumerable<OWF_ManagersNextTwoMonthsViewModel> GetAllExistingManagersByCurrentDate() 
    { 
     var managers = _relationshipRepo.GetAll(); 
     var managerListFinal = new List<OWF_ManagersNextTwoMonthsViewModel>(); 
     var year = DateTime.Now.Year; 
     var prevYear = DateTime.Now.AddYears(-1).Year; 

     foreach (var item in managers) 
     { 
      foreach (var onsite in item.OWF_Onsites.Where(x => x.OnsiteDate != null)) 
      { 
       if (Convert.ToDateTime(onsite.OnsiteDate).Month == DateTime.Now.Month && Convert.ToDateTime(onsite.OnsiteDate).Year == year || 
        onsite.TargetMonth == DateTime.Now.Month && onsite.OnsiteDate == null && Convert.ToDateTime(onsite.OnsiteDate).Year == year || 
        onsite.TargetMonth == (DateTime.Now.Month + 1) && onsite.OnsiteDate == null && Convert.ToDateTime(onsite.OnsiteDate).Year == year || 
        Convert.ToDateTime(onsite.OnsiteDate).Month == (DateTime.Now.Month + 1) && Convert.ToDateTime(onsite.OnsiteDate).Year == year || 
        Convert.ToDateTime(onsite.OnsiteDate).Month == DateTime.Now.Month && Convert.ToDateTime(onsite.OnsiteDate).Year == prevYear || 
        onsite.TargetMonth == DateTime.Now.Month && onsite.OnsiteDate == null && Convert.ToDateTime(onsite.OnsiteDate).Year == prevYear || 
        onsite.TargetMonth == (DateTime.Now.Month + 1) && onsite.OnsiteDate == null && Convert.ToDateTime(onsite.OnsiteDate).Year == prevYear || 
        Convert.ToDateTime(onsite.OnsiteDate).Month == (DateTime.Now.Month + 1) && Convert.ToDateTime(onsite.OnsiteDate).Year == prevYear) 
       { 
        managerListFinal.Add(item); 
       } 
      } 
     } 
     //return Mapper.Map<IEnumerable<OWF_ManagerRelationship>, IEnumerable<OWF_ManagersNextTwoMonthsViewModel>>(managerListFinal); 
     return managerListFinal; 
    } 
+0

我是懶得看整個臃腫的文字,所以我開始尋找questionmarks'?'在文本以閱讀完整的實際問題。結果發現除標題外沒有其他問題。我建議你重新閱讀你的文字並編輯問題。 – grek40

+0

我對格式進行了一些(小的)修改,使其更容易閱讀,但正如@ grek40所說的,您可能想重新審視這個問題並嘗試使其更清晰。 – levelonehuman

回答

0

你把項目從OWF_ManagerRelationship檢查它們,然後把它們放入OWF_ManagersNextTwoMonths的列表視圖模型。之後你想映射它們。

我認爲你應該做這樣的事情

managerListFinal.Add(Mapper.Map<OWF_ManagerRelationship,OWF_ManagersNextTwoMonthsViewModel>(item)); 

,你應該是好

相關問題