Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用TableAdapters将十进制从C错误地传递到SQL Server_C#_Sql Server 2008_Tableadapter - Fatal编程技术网

C# 使用TableAdapters将十进制从C错误地传递到SQL Server

C# 使用TableAdapters将十进制从C错误地传递到SQL Server,c#,sql-server-2008,tableadapter,C#,Sql Server 2008,Tableadapter,昨天,我注意到在使用TableAdapters时出现了一个奇怪的行为,由于某种原因,当传递一个小于0.1的小数时,它会变成一个整数。例如,如果我通过1.0123,我可以在SQL分析器中看到1.0123,但如果我通过0.0123,我将得到123。是否存在已知问题?您可以执行以下步骤来重现问题: 创建一个新的数据库TestDatabase,并创建以下存储过程 create proc DecimalParametersSelect ( @Foo decimal(10,5) ) as sel

昨天,我注意到在使用TableAdapters时出现了一个奇怪的行为,由于某种原因,当传递一个小于0.1的小数时,它会变成一个整数。例如,如果我通过1.0123,我可以在SQL分析器中看到1.0123,但如果我通过0.0123,我将得到123。是否存在已知问题?您可以执行以下步骤来重现问题:

创建一个新的数据库TestDatabase,并创建以下存储过程

create proc DecimalParametersSelect
(
    @Foo decimal(10,5)
)

as

select @Foo
创建新项目并添加新的数据集文件SampleDataset。添加新的TableAdapter和Add DecimalParameters选择为选择过程它应该是数据库中唯一的一个

运行项目并尝试选择一些数据,例如

using (SampleDatasetTableAdapters.DecimalParametersSelectTableAdapter dta = new SampleDatasetTableAdapters.DecimalParametersSelectTableAdapter())
{
    var table = dta.GetData(0.01588M);
}

在探查器中,您应该看到传入的值是1588,有趣的是,返回的值在C中被正确识别为0.01588,这似乎是SQL探查器中的一个显示错误,因为跟踪中不包括TextData列,并且RPC命令的文本是从另一个源(可能是二进制数据)重建的

我按照您的步骤进行了操作,并能够使用SQL profiler中的默认跟踪在SQL 2008 R2上进行回购

但是,当跟踪属性更改为包含RPC:Completed的TextData列时,将显示正确的命令


那么什么是DecimalParametersSelectTableAdapter?Is似乎不是.Net基类库的一部分。无法复制-我在探查器VS2012RC中看到0.01588,SQL Server 2012看起来可能是特定于2008年的,正是如此。事实上,我在追逐另一个bug时偶然发现了它,我认为这两者是有联系的。看来我得继续找了。谢谢你的帮助。