Можно ли предотвратить в SQL Producer перезапись только одного из столбцов таблиц?
Сценарий: вычисляемое свойство должно быть доступно для методов RAW. Свойство IsComputed, установленное в модели, не будет работать, так как его значение не будет доступно для методов RAW.
Попытка решения: создайте вычисляемый столбец непосредственно в таблице SQL, в отличие от установки свойства IsComputed в модели. Укажите, что CodefluentEntities не перезаписывает вычисляемый столбец. Я ожидал бы, что спецификация будет читать вычисленное поле SQL не иначе, чем если бы это было обычное поле базы данных.
Проблема: я не могу понять, как предотвратить, чтобы Codefluent Entities перезаписывал вычисляемый столбец. Я попытался использовать производственные флаги, а также установить product ="false" для свойства в.cfp. Ни один не работал.
Вопрос: Можно ли предотвратить перезапись моего вычисляемого столбца сущностями Codefluent и, если да, то как?
2 ответа
Альтернативное решение: альтернативное решение - выполнить следующий сценарий TSQL после завершения генерации SQL Producer.
ALTER TABLE PunchCard DROP COLUMN PunchCard_CompanyCodeCalculated
GO
ALTER TABLE PunchCard
ADD PunchCard_CompanyCodeCalculated AS CASE
WHEN PunchCard_CompanyCodeAdjusted IS NOT NULL THEN PunchCard_CompanyCodeAdjusted
ELSE PunchCard_CompanyCode
END
GO
Для работы решения требуется дополнительная конфигурация. Чтобы это решение работало, необходимо также настроить спецификацию, чтобы она не пыталась сохранить данные, связанные с вычисляемыми столбцами. Это можно сделать с помощью Model, используя расширенные свойства. В моем случае я выбрал свойство CompanyCodeCalculated. Пошел в расширенные настройки. И установите для параметра Сохранить значение False.
Вопрос: Где-то в Центре знаний есть мимолетная ссылка на то, как автоматизировать выполнение SQL-сценариев после завершения SQL Producer, но я не могу его найти. Кто-нибудь сейчас, как это делается?
Комментарии по использованию: просто хотел, чтобы люди знали, что я реализовал этот подход и до сих пор доволен результатами.
Решение, которое вы ищете, здесь
Вы можете выполнять любые пользовательские сценарии T-SQL, которые вам нравятся, единственная предпосылка - дать сценарию конкретное имя, чтобы производитель знал, когда его выполнять.
т.е. если вы хотите, чтобы ваш пользовательский скрипт выполнялся после генерации таблиц, назовите ваш скрипт
after_[ProjectName]_tables
,
Сохраните свой собственный файл t-sql вместе с файлами, сгенерированными с помощью codefluent, и постройте проект.
В моем конкретном случае мне пришлось включить полнотекстовый индекс в одном из столбцов таблицы, я написал сценарий SQL для функциональности, сохранил его как
`after_[ProjectName]_relations_add`
Вот как они выглядят в моей файловой директории