Мы экспериментируем с DevExpress XAF и XPO, чтобы использовать их для дальнейшего развития существующей системы ERP для малого бизнеса. У нас есть база данных SQL, в которой нельзя изменять существующие таблицы. То, что мы пытаемся сделать, это добавить новые необходимые свойства таблицы только к новым таблицам, которые затем должны быть «подключены» к старым таблицам через наследование объектов (MapInheritanceType.OwnTable
).
Например:
У нас есть устаревшая таблица tCustomer. Теперь мы добавляем объект XPO tCustomerExtended, например
public class tCustomerExtended : test.Module.BusinessObjects.db.tCustomer ...
Затем класс tCustomerExtended
должен быть расширен новыми свойствами, а класс tCustomer
останется неизменным (для использования старым клиентским приложением).
Это работает нормально, конечно. Создается новая таблица tCustomerExtended
с первичным ключом kCustomer (ключ устаревшей таблицы). Также XAF генерирует пользовательский интерфейс, как и ожидалось: представление tCustomerExtended
пусто, так как оно показывает записи tCustomerExtended
.
!!! Но чего мы действительно хотим добиться, так это показать все существующие записи tCustomer
в этом представлении и новые свойства tCustomerExtended
. Затем метод OnSaving должен сохранить устаревшие свойства в tCustomer, а новые свойства — в tCustomerExtended. Также мы должны сгенерировать ключ kCustomer, так как старая таблица tCustomer kCustomer PK не имеет спецификации идентификации.
На данный момент я не понимаю, как этого добиться, не меняя старый tCustomer
(что категорически запрещено).