【发布时间】:2011-10-19 14:28:55
【问题描述】:
Oracle 列:user_id int 不为空,
Linq 查询:
UserId = user.Field<int>("user_id"),
UserId 是 int 类型。其他字符串、char 字段都可以正常工作,只有当我使用 thsi 字段时才会出现此错误。
什么是正确的映射或我做错了什么?
【问题讨论】:
Oracle 列:user_id int 不为空,
Linq 查询:
UserId = user.Field<int>("user_id"),
UserId 是 int 类型。其他字符串、char 字段都可以正常工作,只有当我使用 thsi 字段时才会出现此错误。
什么是正确的映射或我做错了什么?
【问题讨论】:
如果您使用的是Field<T>(),则表明您使用的是DataTable,此时数据库类型几乎无关紧要。异常应该向您展示演员如何失败 - actual 类型是什么。如果没有,您可以轻松地进行一些诊断:
object o = user["user_id"];
if (o == null)
{
Console.WriteLine("user_id is null");
}
else
{
Console.WriteLine("Actual type of user_id: {0}", o.GetType());
}
我怀疑你会发现它是 long 或 short,或者类似的东西 - 但这应该可以肯定地告诉你。
【讨论】:
int 是某种形式的NUMBER(,) 的同义词吗?如果是这样,那可能就是导致问题的原因。