Мне нужна помощь. Я был взад и вперед, в каком направлении мне нужно идти, и есть некоторые варианты, которые мне не нравятся или не могут использовать.Построение собственного объекта SqlDataReader
Я написал общий инструмент дампа данных, который извлекает данные с указанного сервера и выгружает их в файл с разделителями-запятыми. Это конфигурация и какой запрос запускается из таблицы SQL, созданной специально для этого инструмента. Однако у меня есть новое требование, что есть несколько дампов данных, которые нуждаются в данных, выведенных с разных серверов и объединенных вместе, но я не хочу изменять инструмент для этого «настраиваемого» типа pull/dump. Я пытаюсь сохранить его общий, поэтому я не постоянно кодирую его. Моя мысль состоит в том, чтобы создать lib, в котором мой инструмент отчетности может использовать для каждого из этих типов пользовательских типов, а данные, возвращаемые этой библиотекой, являются объектом SqlDataReader. Однако, так как этой библиотеке придется вытаскивать с разных серверов и объединять данные, возможно ли, чтобы lib создал собственный SqlDataReader с этими данными и вернулся к инструменту дампа данных, или я слишком много думаю об этом?
Я не хочу возвращать массив, потому что это не то, как инструмент теперь просматривает данные, главным образом потому, что некоторые из моих существующих дампов данных составляют миллионы строк, поэтому мой существующий цикл представляет собой цикл данных, чтобы сохранить память. Тем не менее, libs могут создавать двухмерный массив, если он может быть преобразован в объект SqlDataReader перед возвратом. Таким образом, мне не нужно сильно менять цикл в моем приложении.
Надеюсь, что все имеет смысл. У меня это в голове, подпрыгивая, так что я написал это как 10 раз.
Редактировать: Имейте в виду, что каждая запись будет разбросана по 3 серверам и должна быть объединена. Это три разных процесса, которые работают вместе, но имеют свои собственные серверы. Например, идентификатор с сервера 1 будет относиться к Server1ID на сервере Server2.
Если вы пишете что-то в 10 раз, возможно, вам нужно что-то сделать с помощью шаблонов проектирования, а также для рефакторинга кода/реализации интерфейсов для конкретных функций, которые будут специфичны для существующего проекта, не влияя на исходное состояние вашего кода , – MethodMan
@MahmoudFayez это сервис, который извлекает и удаляет данные, что не поможет, так как запись 1 разбросана по всем серверам и должна быть объединена. – Switch