为什么在使用Guid.Parse()方法时抛出异常?

cod*_*unk 9 c# linq entity-framework asp.net-web-api

我正在使用WebApi应用程序,我在其中编写了一个方法来使用以下代码获取学生:

    public Student GetStudent(string studentId)
    {
        var student = this.context.Students.FirstOrDefault(x => x.Id == Guid.Parse(studentId));
        return student;
    }
Run Code Online (Sandbox Code Playgroud)

这里studentId来自WebApi电话.但是,当我尝试运行此应用程序时,它会抛出一个异常,例如:

附加信息:LINQ to Entities无法识别方法'System.Guid Parse(System.String)'方法,并且此方法无法转换为存储表达式.

有没有人告诉我为什么会这样,我该如何解决这个问题?

Mai*_*nul 11

首先,当你使用EntityFramework它时,它会尝试将Guid.Parse()方法转换为SQL,但它无法做到这一点,因为它无法转换为SQL语句/'store expression'.

您应该只将字符串解析移出存储表达式,并Guid在查询中使用它之前将字符串解析为value.

    public Student GetStudent(string studentId)
    {
        var stdId = Guid.Parse(studentId);
        var student = this.context.Students.FirstOrDefault(x => x.Id == stdId);
        return student;
    }
Run Code Online (Sandbox Code Playgroud)