Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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# 有效的SQLGeometry对象导致;无效”;例外情况;在其上运行STNumGeometries()时_C#_Sql Server_Sqlgeometry - Fatal编程技术网

C# 有效的SQLGeometry对象导致;无效”;例外情况;在其上运行STNumGeometries()时

C# 有效的SQLGeometry对象导致;无效”;例外情况;在其上运行STNumGeometries()时,c#,sql-server,sqlgeometry,C#,Sql Server,Sqlgeometry,我使用的是一个SQL Server 2008数据库,其中包含一个几何列,我现在在CSharp中加载和操作这些数据时遇到了问题,而以前这些数据都不是问题 我有一个Microsoft.SqlServer.Types.SqlGeometry类型的对象,我需要获取STNumGeometries,即: var numberOfGeometries = tmpDelytas[i].Delyta.DelytaGrans.STNumGeometries(); 但它导致了一个错误: ArgumentExcept

我使用的是一个SQL Server 2008数据库,其中包含一个几何列,我现在在CSharp中加载和操作这些数据时遇到了问题,而以前这些数据都不是问题

我有一个Microsoft.SqlServer.Types.SqlGeometry类型的对象,我需要获取STNumGeometries,即:

var numberOfGeometries = tmpDelytas[i].Delyta.DelytaGrans.STNumGeometries();
但它导致了一个错误:

ArgumentException 24144:无法完成此操作,因为实例无效。使用MakeValid将实例转换为有效实例。请注意,“MakeValid”可能会导致几何体实例的点发生轻微移动

我在SQLServer和STIsValid中检查了Geometry值,这些报告是有效的。(这并不奇怪,因为该代码以前就起作用了)

根据CSharp和SQLServer中的STIsValid,几何体是有效的,并且STNumGeometries在数据库中工作,如果我在数据库中放置断点,则STNumGeometries的值在监视中报告为1。但是如果我向前一步,程序仍然会因为这个错误而崩溃

为什么我的代码突然不愿意处理这行代码

更新 我已经找到了一个“解决方案”,但仍然想理解这个问题,因为这太糟糕了

var geomText = tmpDelytas[0].Delyta.DelytaGrans.ToString();
var geom = SqlGeometry.STGeomFromText(new SqlChars(geomText),0);                            
var numberOfGeometries = geom.STNumGeometries();

这是可行的。

那么有什么变化?更改为VS2012?添加/删除项目参考?据我所知,没有重大变化。我们已经向项目中添加了一个不相关的类,并且在服务器上运行了该代码的一个版本,自发布以来,除了向一个不相关的类添加一个函数之外,没有任何更改。服务器上的代码在相同的测试数据上运行良好。它是在所有数据点上还是在子集上运行良好?在这种情况下,多边形只是一个圆,一长串的点可以很好地结合在一起。当有许多较小的多边形时,会出现这种情况,但在这个测试用例中,数组中只有一个对象,一个delyta类,一个几何体,这导致了错误。奇怪。当它在断点上停止时,能否在“局部变量”窗口中深入到该值并在那里看到它?只是想知道您正在使用调试器这一事实是否是一个问题?