gpt4 book ai didi

c# - Entity Framework Core linq 查询返回 InvalidCastException

转载 作者:行者123 更新时间:2023-11-30 23:19:07 27 4
gpt4 key购买 nike

我目前正在使用 Entity Framework 在 .net CORE 中创建一个 web api。

每当我尝试使用 linq 按 ID 选择单个记录时,我都会收到以下错误:

An exception of type 'System.InvalidCastException' occurred in Microsoft.EntityFrameworkCore.dll but was not handled in user code.

Additional information: Unable to cast object of type 'System.Int32' to type 'System.Char'.

每当我执行以下 linq 查询时,就会发生此错误:

int id = 1;
User user = context.Users.First(i => i.UserId == id);

我已经查过了,字段UserId和变量id都是整数。该表还包含足够的元素,并且存在 id 为 1 的行。

谁能告诉我我做错了什么?

编辑:这是 User 模型的一部分:

public class User
{
public int UserId { get; set; }
(...)
}

最佳答案

注意:答案实际上是在原始问题下的评论中提供的。我只是在这里添加了一点,以使其更加可见和清晰。


Entity Framework 显然通过表示每个表中不同列的属性将 C# 类映射到数据库表。现在,如果其中一个属性的数据类型与其在数据库中对应列的数据类型不兼容,那么当您尝试从该表中获取任何内容时,您将得到一个 System.InvalidCastException,即使不匹配的属性不直接参与查找。

在问题中,查询是:

User user = context.Users.First(i => i.UserId == id);

在这里,id 及其对应的属性 UserId 是否有效且彼此兼容并不重要,因为所获取的是整个类的实例用户

显然 User 中的某些其他属性的类型与数据库中 user 表中具有相同名称的列的类型不兼容,因此尝试映射到它会抛出上述异常。

关于c# - Entity Framework Core linq 查询返回 InvalidCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40448796/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com