2012-12-15 2 views
0

Я понимаю, что это может быть несколько исправно, но я пытаюсь решить, трачу ли я ресурсы на преобразование IEnumerable в DataTable. У меня есть данные в IEnumerable<T>, но мне нужно применить бизнес-логику. У меня будут данные в другом IEnumerable<T>, которые я буду сравнивать с другими коммерческими операциями. Мне кажется, что я могу сделать что-либо для строго типизированных перечислимых объектов, таких же, как DataTable ..... но я больше знаком с DataTables, так что не уверен в себе.IEnumerable или DataTable для обновлений

В конце концов, данные будут представлены в List<T> и будут сериализованы веб-службой, поэтому я действительно чувствую, что собираюсь и из набора данных является пустой тратой?

Правильно ли я могу что-либо сделать для объектов IEnumerable, таких как DataTable? Если я использую IEnumerables, должен ли я просто иметь вспомогательные методы, которые выполняют «работу», или я должен пройти лишнюю милю и создавать расширения?


Мой зеленый новичок показывает. Позвольте мне дать вам немного больше информации о данных и о том, как они используются. Данные будут личной информацией, поступающей к абоненту. Они могут вносить изменения, а затем отправлять обновления.

Данные свертываются и отправляются им, но хранятся в нормализованном состоянии (3-го уровня, я думаю, это). Я сворачиваю данные с помощью SP и UDF и т. Д. В процессе есть много соединений и курсора для оценки исторических записей, которые пользователь представил себе, чтобы затем определить рекомендуемое действие. Пользователь может принять рекомендуемое действие или нет, но все, что они делают, отправляется обратно и сбрасывается обратно в нормализованное состояние в следующий раз.

Дискуссия, в которую я запускаю (test environ so no harm), состоит в том, чтобы заменить операции db на ORM и выполнить бизнес-логику через рабочий процесс в среднем ярусе. Это позволит мне быть более динамичным и текучим с изменениями в бизнесе. Мой ORM получает мои данные, но он находится в форме IEnumerable, и поэтому я ищу лучшую структуру данных для выполнения моего рабочего процесса. В конце концов, я не привязываюсь ни к чему, кроме создания настраиваемого объекта, который сериализуется и отправляется клиенту через веб-службу.

Пожалуйста, если я могу предоставить дополнительную информацию, не стесняйтесь. Я не пытаюсь быть тупой. Thank you

+0

IEnumerable не индексируемых, поэтому не все может быть сделано на одном в том же порядке. Чтобы мы рассказали вам о наилучшей структуре данных, вам, вероятно, нужно сообщить нам, что вы делаете с данными и как вам нужно получить к ней доступ. Мне кажется странным, что вы используете DataTable для управления данными. Выстрел в темноте, я бы сказал, просто попробуйте List вместо этого .. но опять же нам нужно знать, что вы делаете – Alan

+0

Между linq и даже простым списком управления, я думаю, что нет необходимости идти в DataTables для данных манипуляция. Как указано, если вы сообщите нам, что вы хотите сделать с данными, мы можем быть более полезными. Напоминание. DataTable был впервые разработан для упрощения доступа к базе данных, а не для манипулирования данными. –

+0

Eyal Я был в другом проекте, тогда праздники, но я вернулся, и ваш комментарий был моим решением. Я передал объект в список , используя метод расширения ToList, затем используйте LINQ для выполнения всех необходимых действий. Я хотел бы дать вам кредит, поэтому, если вы сможете преобразовать свой комментарий в ответ, я буду рад отметить его. – GPGVM

ответ

0

Extension methods может использоваться для любых запросов/преобразований на этом IEnumerable<T>. Вам, вероятно, вообще не нужны DataTables. Доступные методы расширения LINQ могут быть скованы/объединены в другие настраиваемые методы расширения, которые вы могли бы написать.

Что касается обновлений, вы можете поместить этот IEnumerable в индексируемую коллекцию, если хотите более легко получить доступ к отдельным элементам по индексу. Но это будет зависеть от точных операций, которые вы готовы выполнить.

2

IEnumerable - это в основном API-интерфейс для чтения. У вас есть доступ ко всем участникам, вы можете работать с ними дальше, но вы не можете добавлять новые или удалять некоторые. ReadOnly - это «второе» имя.

DataTable, с другой стороны, больше связан с ADO.NET, это определенно нехорошее решение для DTO или бизнес-объектов. Он поддерживает добавление, удаление и удаление, но должен использоваться только на уровне данных.

Я хотел бы предложить использовать шаблон Фасад на свой бизнес-слой, оберточная Validations вызовы, внутренне работая с дао или репозитария

Смежные вопросы