【发布时间】:2017-03-19 19:54:27
【问题描述】:
我目前正在使用实体框架在 .net CORE 中创建一个 web api。
每当我尝试使用 linq 按 ID 选择单个记录时,我都会收到以下错误:
“System.InvalidCastException”类型的异常发生在 Microsoft.EntityFrameworkCore.dll,但未在用户代码中处理。
附加信息:无法转换类型为“System.Int32”的对象 输入“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; }
(...)
}
【问题讨论】:
-
我认为问题中没有足够的信息来回答这个问题。至少,表定义和类定义也是需要的。
-
尝试使用 i.UserId.Equals(id) 而不是 i.UserId == id
-
这是类定义的一部分。什么是完整的类定义,什么是表定义?由于其他列不匹配,很容易发生这种情况。
-
这可能是因为您有一个属性定义为
char,它是数据库中的一个整数。 -
@Rob 谢谢!这就是问题所在。在我的数据模型中有一个 char 属性,但在数据库中是整数。
标签: c# linq asp.net-core entity-framework-core .net-core