Я работаю с .NET DataSets в Compact Framework.Один DataSet содержит четыре или пять таблиц с легким использованием данных (порядка нескольких строк каждая).Таблица первичных данных (на которой основаны все ограничения внешнего ключа) содержит одну строку.DataSet сохраняется на диске в виде XML-файла (с использованием DataSet.WriteXML).
Мы обнаруживаем, что очень часто все значения DataRow устанавливаются в DBNull без видимой причины.Более того, когда данные снова сохраняются, одна строка первичной таблицы данных записывается без данных.
Например, мы ожидаем увидеть:
<MyDataSet>
<MyTypedDataRow id="1" data1="data" data2="more data" />
...
где «data1»и «data2» - столбцы, не допускающие значения NULL.Вместо этого мы редко получаем:
<MyDataSet>
<MyTypedDataRow />
...
, что должно быть невозможным.
В нашей среде используется многопоточность, но доступ к DataSet строго защищен от потоков.
Когда я пытаюсь вызвать это в отладчике, все мои усилия встречаются с ошибками из-за ограничений таблицы.
Есть ли у кого-нибудь мысли о том, как это может происходить?
Спасибо за поиск.
РЕДАКТИРОВАТЬ: Одна вещь, которую я не упомянул, может быть фактором, способствующим.Это строго типизированный DataSet, который был создан с использованием дизайнера Visual Studio, но после создания претерпел значительные ручные изменения (не вините меня, это было до моего времени).Очевидно, что это может привести к непредвиденным побочным эффектам ... но я не понимаю, как можно решить эту проблему, даже если мы попробуем.