当没有要从存储过程返回的数据时,以下代码抛出空引用异常。如果存在数据,则方法成功执行。
我在下面的代码中做错了吗?我是否需要从模型中创建对象?
public PersonVM GetStaff()
{
PersonDM personDM = _Repo.GetStaff();
PersonVM personVM = PersonVM.ToViewModel(personDM);
return personVM;
}
public class PersonDM
{
public int RoleID { get; set; }
public string Name { get; set; }
}
public class PersonVM
{
public int RoleID { get; set; }
public string Name { get; set; }
public static PersonVM ToViewModel(PersonDM model)
{
return new PersonVM
{
RoleID = model.RoleID,
Name = model.Name
};
}
public PersonDM ToEntityModel()
{
return new PersonDM
{
RoleID=this.=RoleID,
Name = this.Name,
}
}
}
当没有要从SP返回的数据personDM
变为NULL时。我需要它填充空值而不返回NULL。有可能实现吗?
我使用以下代码返回List<PersonVM>
的方法做了同样的事情。如果没有数据,它将使用NULL值填充VM。如何将以下代码应用于返回类型PersonVM
public List<PersonVM> GetPartyByPartyRelationship(int partyRoleId, int partyRelationshipTypeId)
{
List<PersonDM> personDMList = _partyManagerRepo.GetPartyByPartyRelationship(partyRoleId, partyRelationshipTypeId);
List<PersonVM> personVMList = new List<PersonVM>();
foreach (PersonDM personDM in personDMList)
{
personVMList.Add(PersonVM.ToViewModel(personDM));
}
return personVMList;
}
答案 0 :(得分:1)
假设_Repo.GetStaff()
返回null并且因此personDM
为空,当您尝试访问NullReferenceException
内的对象属性时,引发ToViewModel()
并不奇怪。 {1}}在空引用上。
在GetStaff()
或ToViewModel()
中添加空检查并进行适当处理。根据您的更新,您说您要返回一个具有null属性的viewmodel,您可以使用null检查:
public static PersonVM ToViewModel(PersonDM model)
{
if (model == null)
return new PersonVM();
return new PersonVM
{
RoleID = model.RoleID,
Name = model.Name
};
}
更新 - 或者,更改ToViewModel()
方法以使用null-progagating运算符:
public static PersonVM ToViewModel(PersonDM model)
{
return new PersonVM
{
RoleID = model?.RoleID,
Name = model?.Name
};
}