обратная совместимость схемы базы данных netTiers - PullRequest
2 голосов
/ 07 февраля 2012

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

В прошлом это не было проблемой, но в моем текущем проекте мы пытаемся создать систему с нулевым временем простоя обновлений.,У нас есть проблема с обновлением базы данных, и было бы здорово, если бы мы могли обновить базу данных, не затрагивая код.

Кто-нибудь, использующий netTiers, сталкивался с подобными проблемами или рассматривал схожие требования?

Изменится лишаблоны для доступа к столбцам по имени будут более терпимыми к предыдущим версиям схемы?Если это так, для меня, я думаю, это будет стоить небольшого снижения производительности (здесь указано 3% Поиски на основе порядковых номеров в DataReader по сравнению с именованными поисками )

1 Ответ

0 голосов
/ 03 апреля 2013

Как вы заметили, .NetTiers использует порядковый поиск в DataReader.Единственный способ заставить .NetTiers играть хорошо, это всегда добавлять новые столбцы в конец существующих таблиц и никогда не реструктурировать порядок полей таблицы.

При этом ваш код v1 все равно будет работать противтаблица, к которой добавлен новый столбец в конце таблицы, а код v2 будет работать с новым дополнением.

...