【问题标题】:Specified cast is invalid error, LINQ to Oracle tableSpecified cast is invalid error, LINQ to Oracle table
【发布时间】:2011-10-19 14:28:55
【问题描述】:

Oracle 列:user_id int 不为空,

Linq 查询:

UserId = user.Field<int>("user_id"),

UserId 是 int 类型。其他字符串、char 字段都可以正常工作,只有当我使用 thsi 字段时才会出现此错误。

什么是正确的映射或我做错了什么?

【问题讨论】:

    标签: c# linq oracle


    【解决方案1】:

    如果您使用的是Field&lt;T&gt;(),则表明您使用的是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());
    }
    

    我怀疑你会发现它是 longshort,或者类似的东西 - 但这应该可以肯定地告诉你。

    【讨论】:

    • 嗯。查了一下,是十进制。一直在怀疑这样的事情。感谢您的回答。奇怪的是 int DB 列映射到 dataTable 中的十进制。
    • @MunishGoyal:究竟是Oracle中的类型,你的SQL是什么样的?
    • 创建表 temp_user (user_id int not null, ...) 它是 int 类型
    • @MunishGoyal:int 是某种形式的NUMBER(,) 的同义词吗?如果是这样,那可能就是导致问题的原因。
    猜你喜欢
    • 1970-01-01
    • 2020-06-05
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多