Сценарий
Я использую SubSonic для моего последнего проекта. Обо всем по порядку; этот проект ограничен использованием .net 3.0, и SubSonic был ОТЛИЧНЫМ. Я люблю это.
Однако у меня возникли проблемы с настройкой. Заказчик попросил нас использовать две базы данных SQL Server 2005, одна из которых будет реплицировать другую, за исключением некоторых столбцов.
На первый взгляд это кажется легким делом. Однако SubSonic по умолчанию захватывает все столбцы, вызывая SQLExceptions. Я бы хотел элегантно ограничить список выбора для каждой таблицы.
Например, следующий код справится с задачей, но я бы предпочел не делать это каждый раз, когда я создаю новый запрос:
Query q = Post.Query().WHERE(Post.Columns.PageId, page_id);
if(UsingReplicatedDB)
q.SetSelectList(ReplicatedPostColumnList);
return q.ExecuteReader();
Вопрос
Вышеуказанный метод раздувает мой код и не работает для встроенных FetchByX
методов, генерируемых SubSonic. Есть ли способ элегантно установить по умолчанию SelectList для каждой таблицы?
Примечания
Я пытался удалить столбцы из схемы во время выполнения в моих частичных классах, но столбцы, выглядящие как ColNameColumn
, ищут определенные индексы в коллекции Columns
, поэтому мой план был сорван.
Я знаю, я знаю
Пожалуйста, нет "Ты идиот, зачем ты это делаешь?" ответы. Я понимаю, что, скорее всего, есть более удачные способы, и это кажется немного хакерским, но в этом-то и дело. Мне нужно решение, не придирчивое.