Я задал вопрос таким образом, потому что могу представить, что есть потенциально простое, но специфичное для Devart решение, но, возможно, также очень общее решение для любой подобной ситуации.
Я использую Devart LINQ To Oracle, и обычно вы создаете класс, подобный ItemX
, в файле lqml во время разработки и указываете, какая таблица стоит за ним. Затем во время выполнения вы используете Table(Of ItemX)
для запроса базы данных. Пока все хорошо.
Теперь у меня есть ситуация, когда у меня есть две идентичные таблицы, ItemX
и ItemY
, и мне нужно запрашивать одну или другую в зависимости от флага времени выполнения. Кроме этого, весь код идентичен, и я хочу сохранить его таким. Тем не менее, Table(Of ItemX)
строго типизирован, и поэтому мне нужно иметь дублирующиеся версии всего, с единственным отличием, это тип данных.
Таким образом, конкретное решение для Devart: иметь один класс элементов с именем, просто, Item
, но во время выполнения сделать что-то, чтобы Devart DataContext использовал другую вспомогательную таблицу. Тогда весь код использует базовый объект Item
, но при сохранении в базе данных и из нее он знает, какую таблицу использовать. Есть ли способ сделать это?
Более общий подход заключается в том, чтобы подключить цепочку IQueryable таким образом, чтобы она использовала классы ItemX
и ItemY
внутри, но преобразовала все в базовый класс Item
во внешних сигнатурах. Я не могу даже представить это достаточно ясно, чтобы сформулировать вопрос, хотя. Есть ли способ сделать это?