2016-04-15 127 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)); 

,你应该是好

相关问题