Чтение пользовательских данных из таблиц SQL - PullRequest
2 голосов
/ 18 декабря 2009

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

Мы сейчас (пере) проектируем наш уровень доступа к данным (у нас его раньше не было), и теперь мы собираемся использовать параметризованные запросы в наших преобразователях данных при запросах к базе данных SQL (ранее мы объединяли строки SQL). и избежал всех входных данных).

Теперь мы пытаемся определить наилучший способ обработки пользовательских столбцов, чтобы запрашивать, создавать и обновлять эти записи. Настраиваемые атрибуты будут храниться в словаре наших «бизнес-объектов», поэтому я подумал сделать это так:

Запрос данных

  • Используйте SELECT *, чтобы получить все столбцы, заполнить наши свойства и сохранить остальные (пользовательские данные) в словаре бизнес-объекта.

Создание / обновление

  • Перебрать все столбцы в таблице (что-то вроде: SELECT COLUMN_NAME FROM information_schema.columns WHERE TABLE_NAME = 'TableName'
  • Создать строку SQL (с параметризованными именами переменных), проверив, какие столбцы существуют как в словаре, так и в таблице, а затем добавив значения из словаря в качестве переменных в команду SQLCommand

Или есть ли лучшие подходы при использовании параметризованных запросов?

1 Ответ

2 голосов
/ 18 декабря 2009

Если вы добавляете специальные столбцы, ORM становится очень сложным. В некоторых случаях возврат к DataTable / DataAdapter (я не фанат) может быть вариантом Лично я бы сначала посмотрел другие варианты хранения пользовательских данных:

  • xml столбец
  • набор пар ключ / значение для каждой записи (во второй таблице)
  • какой-то другой формат с разделителями в [n]varchar(max)

Вам действительно нужно добавлять столбцы?

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