Мой рабочий процесс заключался в постепенной разработке моделей с использованием EF-конструктора и создании базы данных из этой модели по мере продвижения.
Недавно мне потребовался вычисляемый столбец, поэтому я создал свойство строки, установил StoreGeneratedPattern = Computed и вручную изменил созданный DDL на вычисляемый столбец. Это проходит испытание.
Однако, если я потом регенерирую базу данных из модели, мне придется повторно вручную изменить вычисляемый столбец, и это не стоит усилий.
Пройдя немного по Google, я не смог найти решение, но сумел придумать использование триггера DDL.
Мне любопытно, есть ли другой, не DDL триггерный метод для достижения того же самого.
Обновление : я решил воспользоваться приведенным ниже решением триггера DDL, хотя мне все еще интересно, если это не нужно, но я подозреваю, что моя проблема заключается в нахождении в меньшинстве с моим стилем рабочего процесса и большинством другие не имеют этой проблемы, потому что они генерируют модель из базы данных ...
--
-- DDL Trigger for CREATE TABLE
--
alter trigger ddltrigCreateTable
on database
for create_table
as
--
-- Table DirectTrackInfoes
--
if EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(max)')='DirectTrackInfoes'
begin
--
-- Computed Column BaseUrl
--
alter table DirectTrackInfoes
drop column BaseUrl
alter table DirectTrackInfoes
add BaseUrl as ((N'https://'+[ClientDomain])+N'/apifleet/rest')
--
-- Initial data
--
insert into [DirectTrackInfoes] ([Version], [ClientDomain], [ClientId], [AccessId], [UserName], [Password])
values (N'1_0', N'foo.com', 9999, 1, N'', N'')
end
--
-- Table HttpMethods
--
if EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(max)')='HttpMethods'
begin
--
-- Initial data
--
insert into HttpMethods (MethodName)
values (N'GET'), (N'POST'), (N'PUT'), (N'DELETE')
end
go