查询数据库时出现空引用异常

Kul*_*han 0 c# sql entity-framework asp.net-mvc-4

我正在使用EF使用以下代码查询数据库:

int UserId = db.StudentModel.FirstOrDefault(c => c.UserName == certUserName).UserId;
Run Code Online (Sandbox Code Playgroud)

然而,每当我尝试使用它时,该死的东西崩溃并给我一个空引用异常.任何想法为什么?我知道命令格式正确,但我不确定在哪里检查错误; 我对MVC范例很陌生.

这是它引用的模型的代码,如果它有所不同:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace IronGriffin.Models
{
    public class StudentModel
    {
        [Key]
        public int UserId { get; set; }
        public string UserName { get; set; }

        public virtual ICollection<Completion> Completions { get; set; }
    }


}
Run Code Online (Sandbox Code Playgroud)

Gra*_*ICA 5

调用FirstOrDefault()最有可能返回null(因为找不到记录),因此当您尝试访问时UserId会得到该异常.

首先选择您想要的字段,然后执行FirstOrDefault:

int? UserId = db.StudentModel
                .Where(c => c.UserName == certUserName)
                .Select(c => c.UserId)
                .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

现在,如果没有找到记录,UserId将是null你不会得到那个特定的错误.