ГЕОМЕТРИЯ вызвала исключение типа «System.Data.StrongTypingException».

У меня есть xsd с DataRow, в котором есть поле типа NetSdoGeometry.sdogeometry. Когда я пытаюсь получить данные, я могу получить все поля из таблицы, кроме одного. Я получаю сообщение об ошибке для поля геометрии и нет данных. У геометрии есть данные, но почему-то они думают, что они пусты:

GEOMETRY = 'r.GEOMETRY' вызвало исключение типа 'System.Data.StrongTypingException'

Вот вызов для получения данных:

MyDS.GisRow r = mDS.Gis.FindByGis_ID((decimal)aRow.Cells["Gis_ID"].Value);

Вот свойства столбца данных GEOMETRY:

AllowDBNull = True
AutoIncrement = False
AutoIncrementSeed = 0
AutoIncrementStep = 1
Caption = GEOMETRY
DataType = NetSdoGeometry.sdogeometry
DateTimeMode = UnspecifiedLocal
DefaultValue =
Expression =
MaxLength = -1
NullValue = (Сгенерировать исключение)
Только для чтения = 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 для этого поля?

Спасибо перед рукой


person Rob    schedule 11.04.2014    source источник


Ответы (1)


Решено!

Вот были ступеньки. В основном это включало воссоздание поля:

  1. В дизайнере xsd щелкните правой кнопкой мыши столбец GEOMETRY в дизайне таблицы и выберите «Удалить». (И если вы видите столбец с именем GEOMETRY1, удалите и его)

  2. В дизайнере xsd щелкните правой кнопкой мыши таблицу и выберите «Настроить», теперь повторно добавьте столбец GEOMETRY в запрос.

  3. Выберите Свойства таблицы, выберите столбец данных GEOMETRY и измените его тип данных с System.Object на NetSdoGeometry.sdogeometry.

  4. Проверьте все запросы и удалите схему перед именем таблицы, если вы планируете использовать ее более чем в одной схеме. Например, «выбрать * из myshema.table1» следует изменить на «выбрать * из таблицы1».

  5. Пересоберите проект и все готово!

Примечание. Если вы удаляете имя схемы, убедитесь, что вы выполнили поиск по всему проекту для «myshema». чтобы убедиться, что вы полностью удалили его. И еще одно замечание, если вы внесете изменения в какой-либо запрос, он снова добавит его обратно, и его нужно будет снова удалить. Вот более подробное объяснение жестко закодированных имен схем: -remove-oracle-schema-name-hardcoded-in-tableadapter-query?forum=adodotnetdataproviders" rel="nofollow">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

person Rob    schedule 14.04.2014