【问题标题】:How skip NullReferenceException in Get API如何在 Get API 中跳过 NullReferenceException
【发布时间】:2020-06-02 12:02:39
【问题描述】:

这里创建一个 API 来获取记录,在我的实体关系表中有两个开始日期和结束日期。在这里,我的强迫是其中之一需要保持 Null 类型。

这里是 ER,即 SchoolCourses:

 public class SchoolCourses
{
    public Guid ID { get; set; }

    public DateTime StartCourseDate { get; set; } 
    public DateTime EndCourseDate { get; set; } 

    public DateTime? StartSemDate { get; set; }  // Null able type
    public DateTime? EndSemDate { get; set; }  // Null able type

}

我创建了一个用于获取值的存储库:

public async Task<ICollection<SchoolCourses>> GetcourseBySchoolId(Guid SchoolId)
    {
        List<SchoolCourses> schoolCourses = null;

            schoolCourses = await _GpsContext.SchoolCourses.AsNoTracking()
            .Where(x => x.SchoolsID == SchoolId)
            .ToListAsync();
        return schoolCourses;
    }

而Controller是这样的:

    public async Task<IActionResult> GetforSchoolCourse(string SchoolId)
    {
        var result = await _schoolCoursesRepository.GetcourseBySchoolId(Guid.Parse(SchoolId));
        List<GetSchoolCourseBySchoolIdVm> getSchoolCourseBySchoolIdVms = new List<GetSchoolCourseBySchoolIdVm>();

        foreach (SchoolCourses schoolCourse in result)
        {
            getSchoolCourseBySchoolIdVms.Add(new GetSchoolCourseBySchoolIdVm
            {
                id = schoolCourse.ID.ToString(),
                StarCoursetDate = schoolCourse.StartCourseDate.ToString(),
                EndCourseDate = schoolCourse.EndCourseDate.ToString(),
                StartSemDate = schoolCourse.StartSemDate.ToString(),
                EndSemDate = schoolCourse.EndSemDate.ToString(),

            });

        }
        return Ok(getSchoolCourseBySchoolIdVms);
    }

这里是 View Model 供参考:

public class GetSchoolCourseBySchoolIdVm
{
    public string id { get; set; }

    public string StarCoursetDate { get; set; } 
    public string EndCourseDate { get; set; } 

    public string StartSemDate { get; set; } 
    public string EndSemDate { get; set; } 

}

在完成上述所有工作后,在招摇中出现异常错误如下:

System.NullReferenceException: Object reference not set to an instance of an object.; 

【问题讨论】:

标签: asp.net .net-core nullreferenceexception


【解决方案1】:

在您的 SchoolCourses 模型中,StartSemDateEndSemDate 是可为空的类型,因此这些字段的值必须可能为空。这应该在使用前检查过,不像你用过的

StartSemDate = schoolCourse.StartSemDate.ToString(),
EndSemDate = schoolCourse.EndSemDate.ToString(),

如果任何日期为空,则在其上调用.ToString() 方法将抛出NullReferenceException。使用安全导航算子检查

schoolCourse.StartSemDate?.ToString()

schoolCourse.StartSemDate != null ? schoolCourse.StartSemDate.ToString() : string.Empty

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2022-07-19
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多