小编rob*_*oh.的帖子

Oracle编号为C#decimal

我知道在互联网上有几个关于这个问题的主题和帖子,我已经阅读过它们(不是每篇文章,我都要承认),但没有一个完全满足我.

我的情况:
我正在使用ODP.net(dll版本2.111.6.0)访问Oracle DB(版本10 + 11)和DataReader来检索数据(.NET 3.5,C#).

使用此代码会导致' System.OverflowException(算术运算导致溢出).


decimal.TryParse(oraReader.GetOracleDecimal(0).Value.ToString(), 
  NumberStyles.Any, null, out parsedOraDecimal)
Run Code Online (Sandbox Code Playgroud)

这一个导致值为' 3,0000000000000000000000000000000000000000000000000000000000000E-126 '


decimal.TryParse(oraReader.GetOracleValue(0).ToString(), 
  NumberStyles.Any, null, out parsedOraDecimal)
Run Code Online (Sandbox Code Playgroud)

现在我必须找到一些方法来正确检索和评估这个值 - 数据库也可以从我无法控制的其他应用程序中使用,因此无法进行更改.

将我的C#代码中的类型从'decimal'转换为'double'也不是一个真正的选择.

有任何想法吗?

c# oracle odp.net decimal overflowexception

10
推荐指数
2
解决办法
2万
查看次数

SpecFlow:ClassInitialize和TestContext

首先,我是SpecFlow的新手.

我有一个功能文件,我已经/想要自动使用MSTest作为功能测试运行,涉及完全设置的服务器,数据访问......为此,我必须使用SpecFlow的'Given'中的数据配置服务器阻止并在之后启动它.我还必须将一些文件复制到测试的输出目录中.

在非SpecFlow功能测试中,我使用ClassInitialize属性从TestContext获取TestDeploymentDir; 这样的事情:

[ClassInitialize]
public static void ClassSetup(TestContext context)
{
  TargetDataDeploymentRoot = context.TestDeploymentDir;
}
Run Code Online (Sandbox Code Playgroud)

现在有了SpecFlow,我不能再使用这个属性了,因为它被SpecFlow本身使用.确实存在一些新属性,例如BeforeFeature,它的行为类似但是它不会将TestContext作为参数传递.

我只需要访问TestContext的TestDeploymentDir,以便在真正推出我的功能测试服务器之前复制一些文件 - 没有SpecFlow就可以轻松实现,但使用SpecFlow几乎不可能.

如何处理这个问题?

有可能吗?

非常感谢您的建议!

罗伯特


环境:

  • Visual Studio 2012
  • SpecFlow 1.9.0.77

c# mstest specflow visual-studio-2012

8
推荐指数
2
解决办法
1万
查看次数