0

我有一个带有 NetSdoGeometry.sdogeometry 类型字段的 DataRow 的 xsd。当我尝试获取数据时,我可以从表中检索除一个之外的所有字段。我收到几何字段错误并且没有数据。几何确实有数据,但不知何故它认为它是空的:

GEOMETRY = 'r.GEOMETRY' 引发了“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 =
Expression =
MaxLength = -1
NullValue =(抛出异常)
ReadOnly = False
Source = GEOMETRY
Unique = False
Name = 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 错误?

事先感谢

4

1 回答 1

0

解决了!

这是步骤。基本上它涉及重新创建该领域:

  1. 在 xsd 设计器中,右键单击表设计中的 GEOMETRY 列并选择删除。(如果您看到名为 GEOMETRY1 的列,也请删除它)

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

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

  4. 如果您打算在多个模式中使用它,请检查所有查询并从表名前面删除模式。例如“select * from myshema.table1”应编辑为“select * from table1”

  5. 重建项目,一切就绪!

注意:如果要删除架构名称,请确保在整个项目中搜索“myshema”。以确保您已完全删除它。还有一点需要注意的是,如果您对任何查询进行了更改,它将再次将其添加回来,并且需要再次将其删除。以下是硬编码模式名称的更详细说明:http: //social.msdn.microsoft.com/Forums/en-US/c89db0b1-b7ea-4b81-a222-03d375d36f7f/how-to-remove-oracle-架构名称硬编码在表适配器查询?forum=adodotnetdataproviders

于 2014-04-14T12:48:49.863 回答