Visual Studio Dataset Designer Null - PullRequest
       10

Visual Studio Dataset Designer Null

2 голосов
/ 31 октября 2009

В Visual Studio 2008 есть ошибка, заключающаяся в том, что вы не можете использовать конструктор набора данных, чтобы установить для поля типа int значение null. (Есть отчеты об ошибках, возвращающиеся к Visual Studio 2005, но кажется, что это никогда не решалось.)

Единственное выбираемое поведение - генерировать код, который вызывает исключение, если нулевое значение передается обратно из базы данных, а не устанавливать значение в нуль, что потребует, чтобы тип данных был "int?" вместо "int". Пример реального мира - случай, когда внешний ключ имеет значение null, поскольку зависимый объект еще не был назначен.

Существуют ли разумные обходные пути, отличные от 1, не использующие наборы данных Visual Studio, 2. изменение типа данных на строку (что допускает нулевое значение, но сводит на нет точку строгой типизации и принудительное многократное приведение), или 3. изменение выданного кода ( который будет перезаписан при внесении каких-либо изменений в набор данных через конструктор).

Ответы [ 2 ]

2 голосов
/ 31 октября 2009

Попробуйте эту ссылку .

Я подозреваю, что автор перепрыгнул через те же самые циклы, что и вам, включая ручное обновление кода конструктора DataSet (который только что был восстановлен) и использование частичных классов.

Для него в VS2008 было полезно отредактировать файл DataSet .xsd вручную, добавив следующие значения для столбцов, которые он должен был исправить:

msprop:nullValue="-1" 
nillable="true"

Для этого возвращается -1 вместо нуля без ошибок.

Автор приводит пример полного столбца, отредактированного так:

<xs:element name=“FolderParent_ID” msprop:nullValue=“-1” nillable=“true” msprop:Generator_UserColumnName=“FolderParent_ID” msprop:Generator_ColumnVarNameInTable=“columnFolderParent_ID” msprop:Generator_ColumnPropNameInRow=“FolderParent_ID” msprop:Generator_ColumnPropNameInTable=“FolderParent_IDColumn” type=“xs:int” minOccurs=“0” />

Эти обновления не теряются при редактировании и сохранении набора данных.

Справедливое предупреждение: я никогда не пробовал этот код. Кто-то прокомментировал блог автора, сказав, что это не работает для него в VS2008 (ищите второй комментарий, опубликованный «Томом»). Хотя Том действительно исправляет.

Я надеюсь, что это работает для вас.

0 голосов
/ 25 февраля 2011

Был предложен обходной путь в теме connect.microsoft.com ( Обнуляемые типы для типизированного набора данных от Данилы Кораблина), который иллюстрирует взлом, который предоставляет удобную альтернативу исправлению набора данных.

Для краткости, он использует частичные классы в модуле myDataSet .cs в качестве хранилища для добавления обнуляемых свойств в класс строк. Вы можете получить доступ к этим свойствам в своем коде, но не в дизайнере. Этот способ добавления свойств также не может заменить оригинальные неработающие.

Окно Источники данных также не будет отображать свойства, которые вы добавляете в классы набора данных таким способом. Если вы попытаетесь восстановить сгенерированный MS класс данных, добавив столбцы правильных типов, которые могут содержать значения NULL, визуализатор источников данных не поймет их, аннулируя набор данных, поэтому он ничего не отобразит. Это означает, что вам запрещено использовать встроенный конструктор Visual Studio для доступа к столбцам правильных типов.

Этот недостаток делает такую ​​же простую операцию, как копирование строки, содержащей обнуляемый столбец, невозможной.

Я могу убедиться, что пустые столбцы не поддерживаются в конструкторе наборов данных Visual Studio 2005. Microsoft неоднократно давала понять, что не решит эту проблему.

...