Я создал представление для добавления вычисляемого поля «Состояние» и переименовал базовую таблицу.
Select работает нормально.
EF выполняется с использованием POCO, без EDM.
Теперь мне нужно вставить / обновить / удалить.
Сбой с ошибкой
Не удалось обновить или вставить представление или функцию 'dbo.Clients', поскольку она содержит производное или постоянное поле.
Поэтому я добавил вместо триггеров.
Вставка из TSQL работает, но из кода EF происходит сбой с этой ошибкой
Оператор хранения, вставки или удаления затронул неожиданное количество строк (0).
Профилировщик показывает это как последний выполненный запрос
exec sp_executesql N'INSERT [dbo].[Clients]([PersonID], [HeadOfHousehold], [FamilyID], [Complete], {various other columns}, [ExpirationDate], [LastUpdatedDate], [Status])
VALUES (@0, @1, NULL, @2, @3, @4, @5, NULL, NULL, NULL, @6, @7, @8)
SELECT [ClientID] FROM [dbo].[Clients]
WHERE @@ROWCOUNT > 0 AND [ClientID] = scope_identity()'
,N'@0 int,@1 bit,@2 bit,@3 bit,@4 nvarchar(max) ,@5 bit,@6 datetime2(7),@7 datetime2(7),@8 int',@0=26402,@1=0,@2=0,@3=0,@4=N'',@5=0,@6='2020-03-22 00:00:00',@7='2019-03-22 00:00:00',@8=0
Данные вставляются триггером, но scope_identity возвращает NULL, потому что триггер, поэтому EF считает, что 0 строк были обновлены. Очевидно, я не могу заставить EF использовать предложенный обходной путь @@ IDENTITY.
Как настроить EF для работы с обновляемым представлением?
Все предложения, которые я нашел, - обновить EDMX, которого у меня нет.