我有一个带有DataRow的xsd,它有一个NetSdoGeometry.sdogeometry类型的字段。当我尝试获取数据时,我可以从表中检索除了一个以外的所有字段。我得到几何字段的错误,没有数据。几何体DOES有数据但不知何故它认为它是空的:
GEOMETRY =' r.GEOMETRY'抛出了类型&System; System.Data.StrongTypingException'
的例外情况以下是获取数据的调用:
MyDS.GisRow r = mDS.Gis.FindByGis_ID((decimal)aRow.Cells["Gis_ID"].Value);
以下是GEOMETRY DataColumn的属性:
AllowDBNull = True
AutoIncrement = False
AutoIncrementSeed = 0
AutoIncrementStep = 1
Caption = GEOMETRY
DataType = NetSdoGeometry.sdogeometry
DateTimeMode = UnspecifiedLocal
DefaultValue =
表达式=
MaxLength = -1
NullValue =(抛出异常)
ReadOnly = False
来源= GEOMETRY
唯一=假
名称= GEOMETRY
以下是数据集/几何字段的MyDS.Designer.cs:
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
public NetSdoGeometry.sdogeometry GEOMETRY {
get {
try {
return ((global::NetSdoGeometry.sdogeometry)(this[this.tableGis.GEOMETRYColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'GEOMETRY\' in table \'Gis\' is DBNull.", e);
}
}
set {
this[this.tableGis.GEOMETRYColumn] = value;
}
}
该记录表中有GEOMETRY字段的数据。为什么GEOMETRY字段返回null并为该字段生成StrongTypingException错误?
先谢谢
答案 0 :(得分:0)
解决!
以下是步骤。基本上它涉及重建领域:
从xsd设计器中,右键单击表格设计中的GEOMETRY列,然后选择删除。 (如果你看到一个名为GEOMETRY1的列,也删除它)
从xsd设计器中,右键单击该表并选择"配置",现在将GEOMETRY列重新添加到查询
选择表的属性,选择GEOMETRY DataColumn并将其DataType从System.Object更改为NetSdoGeometry.sdogeometry
如果您打算在多个架构中使用此查询,请检查所有查询并从表名前面删除架构。例如"从myshema.table1"中选择*应编辑为"从table1"
重建项目和所有设置!
注意:如果要删除模式名称,请确保在整个项目中搜索" myshema。"确保你完全删除它。还有一点需要注意的是,如果您对任何查询进行了更改,它会再次添加它,并且需要再次删除它。以下是硬编码模式名称的更详细说明:http://social.msdn.microsoft.com/Forums/en-US/c89db0b1-b7ea-4b81-a222-03d375d36f7f/how-to-remove-oracle-schema-name-hardcoded-in-tableadapter-query?forum=adodotnetdataproviders