Унаследованные классы, возвращающие разные значения - PullRequest
1 голос
/ 25 июня 2010

Это скорее концептуальный вопрос, чем что-либо еще.

У меня есть базовый класс с именем «RawReader».

Он устанавливает структуру для классов, чтобы наследовать ее и читать в определенных данныхsystems.

Например, я хочу, чтобы приложение прочитало в известном формате базу данных FoxPro, файл CSV или базу данных SQL (в настоящее время существует еще около 8 форматов), затем передало его через веб-сервис и создалабаза данных SQL из него.

У меня все работает с CSV, FoxPro, Access, Excel и т. д. Достаточно просто.

Классы, которые наследуют RawReader, такие как RawCSV, RawFoxPro, RawAccessвсе возвращают структуру, которая содержит набор данных в качестве одного из членов.Набор данных содержит данные из необработанной системы.Веб-сервис получает эту структуру, создает таблицы SQL и загружает в нее данные.Это уже закодировано и прекрасно работает.

Теперь моя проблема заключается в чтении на SQL.Очевидно, что я мог бы пойти по тому же пути, прочитать удаленную базу данных SQL в набор данных, перенести набор данных, как указано выше, и т. Д ... Моя проблема возникает, когда я чувствую, что не имеет большого смысла передавать базу данных SQL внабор данных, передайте его через веб-сервис, а затем попытайтесь программно воссоздать базу данных SQL.Я чувствую, что теряю много подробностей из базы данных SQL (размеры полей, расширенную информацию и т. Д.). На практике проще создать резервную копию базы данных, преобразовать ее в объект потока и передать резервную копию.к веб-сервису.Но вот в чем проблема ...

Поскольку все классы наследуются от базового класса, они настроены на возврат DataSet.Хакерский способ состоит в том, чтобы просто добавить объект потока в возвращаемую структуру и в моем веб-сервисе добавить другой код, чтобы сделать особый случай для источников SQL, но я пытался избежать этого.

Любые мысли о"правильный" способ сделать что-то подобное?

1 Ответ

0 голосов
/ 25 июня 2010

Я действительно не вижу проблемы, DataColumn, DataTable и DataSet имеют элемент ExtendedProperties, который позволяет вам прикреплять произвольные метаданные. Ваши читатели RawXxx могут предположить, что данные в конечном итоге окажутся в базе данных SQL, поэтому они все могут договориться об именовании этих элементов метаданных. На принимающей стороне вам придется иметь дело только с отсутствующим элементом метаданных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...