Можно ли предотвратить в 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`

Вот как они выглядят в моей файловой директории

каталог файлов

Другие вопросы по тегам