我支持的旧应用程序有问题。数据访问是 CSLA .Net 并且有一行使用 out 参数中的值更新新创建的实体 id。这在数据库中定义为 NUMERIC(10,0)。代码如下所示:
OracleParameter opID = new OracleParameter("P_ID", OracleDbType.Int64);
//... do some stuff and save the new entity to the db
_id = (long)opID.Value;
这在带有 ODP .Net 版本 9.x 的 Windows XP 上曾经很好。在最新版本的 Windows 7 机器上,强制转换失败并且参数的返回数据类型是 Decimal,尽管被明确声明为 Int64。在我看来,这就像新版本 ODP .Net 中的错误/奇怪行为。是否有解决方法或我可以做些什么来解决这个问题,最好不要更改我的代码?
谢谢!