GEOMETRY抛出了类型&System; System.Data.StrongTypingException'

时间:2014-04-11 15:26:45

标签: c# ado.net oracle-spatial sharpmap

我有一个带有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错误?

先谢谢

1 个答案:

答案 0 :(得分:0)

解决!

以下是步骤。基本上它涉及重建领域:

  1. 从xsd设计器中,右键单击表格设计中的GEOMETRY列,然后选择删除。 (如果你看到一个名为GEOMETRY1的列,也删除它)

  2. 从xsd设计器中,右键单击该表并选择"配置",现在将GEOMETRY列重新添加到查询

  3. 选择表的属性,选择GEOMETRY DataColumn并将其DataType从System.Object更改为NetSdoGeometry.sdogeometry

  4. 如果您打算在多个架构中使用此查询,请检查所有查询并从表名前面删除架构。例如"从myshema.table1"中选择*应编辑为"从table1"

  5. 中选择*
  6. 重建项目和所有设置!

  7. 注意:如果要删除模式名称,请确保在整个项目中搜索" 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